class A
{
private int myVar;
public int MyProperty
{
get { return myVar; }
set { myVar = value; }
}
public A( int var)
{
myVar = var;
}
public override bool Equals(object obj)
{
A instance = obj as A;
return instance !=null?instance.MyProperty == this.MyProperty:false;
}
}
class Program
{
static void Main(string[] args)
{
List<A> ACollection = new List<A>();
A A1 = new A(1);
ACollection.Add(A1);
ACollection.Add(new A(2));
ACollection.Add(new A(3));
A A2 = new A(1);
ACollection.Add(A2);
ACollection.Remove(A2);
}
}
После выполнения ожидается что в результирующея коллекция будет иметь вид:
A(1)
A(2)
A(3)
НО НА САМОМ ДЕЛЕ ОНА ИМЕЕТ ВИД:
A(2)
A(3)
A(1)
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Толи лыжи не едут, толи я ... что-то не понимаю
Просто закомментируйте переопределенный метод A.Equals и посмотрите как изменится результат.
Грубо говоря, ваш метод A.Equals сравнивает элементы by value, a когда его не будет, то сравнение будет происходить by reference.
Re: Толи лыжи не едут, толи я ... что-то не понимаю