我不认为我理解为什么第一个语句的评估结果true和最后一个语句评估结果false,但这是一个漫长的一天.
有人可以解释一下吗?
0L.Equals(0) // true
((object)0L).Equals(0L) // true
((object)0L).Equals(0) // false
Run Code Online (Sandbox Code Playgroud)
Tim*_*ter 13
Object.Equals如果对象是值类型,则首先比较类型.在这种情况下两者都不同.
MSDN:
如果当前实例是值类型,则Equals(Object)方法将测试值相等性.值相等意味着以下内容:两个对象属于同一类型.如下例所示,值为12的Byte对象不等于值为12的Int32对象,因为这两个对象具有不同的运行时类型.