为什么函数返回true和false?

时间:2014-12-08 18:01:08

标签: c#

此代码将返回 true

private bool SimpleComparison()
{
    return new byte() == new byte();
}

此代码将返回 false

private bool AnotherSimpleComparison()
{
    return new byte[0] == new byte[0];
}

无法理解,为什么?据我所知,在第二种情况下,它是不同的地址? 那第一种情况呢?

1 个答案:

答案 0 :(得分:3)

==运算符有一个重载,其中两个操作数的类型为byte,并且它被实现为比较每个字节的值;在这种情况下,您有两个零字节,它们是相等的。

==运算符没有为数组重载,因此在第二种情况下使用了具有两个object操作数的重载,并且其实现比较了对这两个对象的引用。对两个数组的引用是不同的。