我认为在两个空列表上调用Equals()应该会返回true,但实际情况并非如此。有人能解释一下为什么吗?
var lst = new List<Whatever>();
var lst2 = new List<Whatever>();
if(!lst.Equals(lst2))
throw new Exception("seriously?"); // always thrown
Equals
,因为它可能会产生非常混乱的行为。例如,如果您有一个Dictionary<List<T>, MyClass>
,那么 .Net 如何为该类构建基于哈希的查找,如果List<T>.Equals
被覆盖了呢? - KeithList<T>.GetHashCode()
需要知道T
是什么。您不能只检查列表的长度,您需要为列表中的每个项目创建一个哈希,并以不会抵消的方式将它们组合起来。 - Keith