为什么两个空列表不相等?

5
我认为在两个空列表上调用Equals()应该会返回true,但实际情况并非如此。有人能解释一下为什么吗?
var lst = new List<Whatever>();
var lst2 = new List<Whatever>();
if(!lst.Equals(lst2))
    throw new Exception("seriously?"); // always thrown
11个回答

-1

即使这些事物具有相同的项目(或都为空),两件不同的事物也不能相同。

您不需要擅长编程就能理解这一点 ;) 假设您有一个这个和一个那个,重要的不是这个那个里面装了什么。重要的是这个不是那个,或者那个不是这个。这就是您使用equals进行检查的内容。


好的,也许是因为我的英语不好,但对我来说,两个事物的引用还是不相等的。这就是为什么他会收到异常通知。但是如果您认为这和那是引用的相同之处...好吧 :) 但我们需要一个例子。谢谢。 - OverStack
1
我对发生的事情非常了解,只是完全不觉得它直观。我在这里提问后尝试了同样的事情,并且在Java中,Java的Equals()方法的行为与我的直觉一致 - 如果列表为空(以及如果它们具有相等的对象,且顺序相同),则返回true。所以,Java的设计者和我一样都是“不擅长编程” ;) 如果我想要检查引用相等性,我会调用ReferenceEquals()而不是Equals()方法。 - Viet Norm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接