C# 为什么函数返回true和false?

C# 为什么函数返回true和false?,c#,C#,此代码将返回true: private bool SimpleComparison() { return new byte() == new byte(); } private bool AnotherSimpleComparison() { return new byte[0] == new byte[0]; } 此代码将返回false: private bool SimpleComparison() { return new byte() == new byte(

此代码将返回true

private bool SimpleComparison()
{
    return new byte() == new byte();
}
private bool AnotherSimpleComparison()
{
    return new byte[0] == new byte[0];
}
此代码将返回false

private bool SimpleComparison()
{
    return new byte() == new byte();
}
private bool AnotherSimpleComparison()
{
    return new byte[0] == new byte[0];
}
我不明白,为什么?据我所知,第二种情况是地址不同?
第一种情况如何?

有一个
=
操作符重载,其中两个操作数都是
字节类型的
,实现它是为了比较每个字节的值;在本例中,有两个零字节,它们相等


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

副本上的所有答案都是错误的;这与所讨论的类型是否为值类型无关。