Пожалуйста, не забудьте проверить параметр obj против null
при переопределении Equals()
. А также сравните тип.
public override bool Equals(object obj)
{
if (obj == null || GetType() != obj.GetType())
return false;
Foo fooItem = obj as Foo;
return fooItem.FooId == this.FooId;
}
Причиной этого является: Equals
должен возвращать false при сравнении с null
. См. Также http://msdn.microsoft.com/en-us/library/bsc2ak47.aspx