Object t = 4;
Object s = 4;
if (t == s) { // false
}
List<Object> q = new List<object>() { t };
Boolean found = q.Contains(s); // found = true!
在上面的代码中,我并不感到惊讶,t == s
返回false
;它将对两个对象的引用进行比较,并且引用不相同。为什么Contains比对象比==更不同?
但我很惊讶Contains正在回归真实;显然这不仅仅是比较对象引用..它就像比较4和4的取消装箱值。但是它是如何知道如何以及为什么知道将对象拆箱来比较它们呢?我试图在这里了解更大的pricniple。
我相信'=='默认为'对象'在内存中的引用比较,并且因为它们是两个不同的对象;他们在记忆中有两个不同的地方。因此他们不是'=='。 – 2013-04-23 18:13:30