У меня есть базовый класс Class1 и производный класс2. Я создаю два экземпляра класса 2, но определяется как class1. Моя проблема: я не могу выполнить общий сравнения между этими объектами. Вот пример:Статический оператор == не обнаруживает переоцененный метод
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.");
}
}
если изменить строку:
if (obj1 == obj2)
для:
if ((Class2)obj1 == (Class2)obj2)
все это верно, но если obj1 и obj2 являются class3 я получаю ошибку
Как это можно решить?
Спасибо
Crandel
Вы пытаетесь сделать основанный на значении компаратор, поскольку C# prvoide standard reference == автоматически. – rerun 2010-12-05 17:02:03
Вы имеете в виду `overloaded` или` overridden`? Завышенный означает что-то другое. Какую ошибку вы получаете? – Oded 2010-12-05 17:02:23
насколько я понимаю, статические методы перегружены и не переопределены. Возможно, я ожидаю переопределенный результат: S. Я не пытаюсь это сделать, но я полагаю, что ошибка заливки – Crandel 2010-12-05 17:29:35