저는 기본 클래스 Class1과 파생 클래스 2를가집니다. class2의 두 인스턴스를 만들지 만 class1로 정의합니다. 제 문제는이 개체들 간의 제네릭 비교를 할 수 없다는 것입니다.정적 연산자 == 과대 평가 된 메서드를 검색하지 않습니다.
if (obj1 == obj2)
에 대한 :
if ((Class2)obj1 == (Class2)obj2)
모든 권리이지만, 강좌 3을 obj2보다 있습니다으로 obj1 경우 I 오류
를 얻을 내가 라인을 변경하는 경우public class Class1
{
public int Property1 = 0;
}
public class Class2 : Class1
{
public int Property2 = 0;
public static bool operator ==(Class2 c1, Class2 c2)
{
return c1.Property2 == c2.Property2;
}
public static bool operator !=(Class2 c1, Class2 c2)
{
return c1.Property2 != c2.Property2;
}
}
public class Class3 : Class1
{
public int Property3 = 0;
}
static void Main(string[] args)
{
Class1 obj1 = new Class2();
Class1 obj2 = new Class2();
if (obj1 == obj2)
{
Console.WriteLine("Yes !!! The two objects are equal!");
}
else
{
Console.WriteLine("The two objects are not equal.");
}
}
: 다음은 예입니다
어떻게 해결할 수 있습니까?
당신에게
Crandel
C# prvoide 표준 참조 == 자동으로 값 비교기를 수행하려고합니까? – rerun
'오버로드'또는 '오버라이드'를 의미합니까? 과대 평가 된 것은 다른 것을 의미합니다. 어떤 오류가 발생하고 있습니까? – Oded
정적 메소드가 오버로드되고 오버라이드되지 않는다는 것을 이해하는 한. 어쩌면 나는 오버라이드 된 결과를 기대할 것이다 : S. 나는 그것을 실제로 시도하지 않는다. 그러나 캐스트 에러라고 생각한다. – Crandel