【发布时间】:2013-03-07 13:47:23
【问题描述】:
我有一个对象列表,我想查看某个特定对象是否在此列表中。但是,当我在列表中使用Contains() 或IndexOf() 方法时,我得到的结果不正确,因为这使用了我不需要的对象的Equals() 方法。我想找到一个特定的实例,而不是一个似乎具有相同属性值的对象。
【问题讨论】:
我有一个对象列表,我想查看某个特定对象是否在此列表中。但是,当我在列表中使用Contains() 或IndexOf() 方法时,我得到的结果不正确,因为这使用了我不需要的对象的Equals() 方法。我想找到一个特定的实例,而不是一个似乎具有相同属性值的对象。
【问题讨论】:
如果你想匹配引用,你可以使用:
if (object.ReferenceEquals(item1, item2))
...
强制它比较引用而不是使用Equals()
或者:
int index = list.FindIndex(item=>ReferenceEquals(item, target));
(有关详细信息,请参阅MSDN Documentation for List.FindIndex()。)
【讨论】:
System.Type 的项目!
你可以使用哈希码吗?
list.where(w => w.GetHashCode() == object.GetHashCode())
【讨论】: