静态方法Object.Equals(Object, Object)
支持引用类型的引用相等,以及值类型按位相等,其中比较的对象具有相同的二进制表示,而值比较对象具有相同的值,即使它们具有不同的二进制表示。我认为Object.Equals(Object,Object)支持按位相等且不等于值
例如,由于i1
和b1
是不同类型的,他们不具有相同的二进制表示,因此Object.Equals(Object, Object)
回报false
:
int i1 = 100;
byte b1 = 100;
Console.WriteLine(Object.Equals(i1, b1));//false
Object.Equals(Object, Object)
也应该返回false比较d1
和d2
(因为时这两个变量具有相同值的不同二进制表示),但它返回true
,这表明它使用值相等来比较它们:
decimal d1 = 1.10M;
decimal d2 = 1.100M;
Console.WriteLine(Object.Equals(d1, d2)); //true
不应该Object.Equals(Object, Object)
在比较d1
和d2
时返回False?
从http://msdn.microsoft.com/en-us/library/bsc2ak47.aspx:
例如,考虑到代表数字 1.10和1.1000两个小数 对象。小数对象不具有按位相等性,因为它们具有不同的二进制 表示,以解释不同数量的尾随零。
感谢名单
这是一个奇怪的错误,你已经找到 – 2011-04-21 18:31:05