此代码将返回 true :
private bool SimpleComparison()
{
return new byte() == new byte();
}
此代码将返回 false :
private bool AnotherSimpleComparison()
{
return new byte[0] == new byte[0];
}
无法理解,为什么?据我所知,在第二种情况下,它是不同的地址? 那第一种情况呢?
答案 0 :(得分:3)
==
运算符有一个重载,其中两个操作数的类型为byte
,并且它被实现为比较每个字节的值;在这种情况下,您有两个零字节,它们是相等的。
==
运算符没有为数组重载,因此在第二种情况下使用了具有两个object
操作数的重载,并且其实现比较了对这两个对象的引用。对两个数组的引用是不同的。