我想知道如何比较两个盒装整数(可以是有符号或无符号)彼此是否相等。比较两个整数对象是否相等,无论类型
例如,看看这个场景:
// case #1
object int1 = (int)50505;
object int2 = (int)50505;
bool success12 = int1.Equals(int2); // this is true. (pass)
// case #2
int int3 = (int)50505;
ushort int4 = (ushort)50505;
bool success34 = int3.Equals(int4); // this is also true. (pass)
// case #3
object int5 = (int)50505;
object int6 = (ushort)50505;
bool success56 = int5.Equals(int6); // this is false. (fail)
我难倒就如何可靠地比较盒装整型这种方式。直到运行时我才会知道它们是什么,我不能将它们都投到long
,因为其中一个可能是ulong
。我也不能将它们都转换为ulong
,因为可能是负面的。
我可以想出的最好的想法是只是试错法,直到找到一个常见的类型或者可以排除它们不相等,这不是一个理想的解决方案。
'int3.Equals()'是不是真正的被覆盖的'Equals',它的过载('等于(INT)''VS等于(对象)') – Rob
你的意思 “但情况3失败”? –
[((object)(int)1).Equals(((object(ushort)1))yield false?](http:// stackoverflow。com/questions/25305393/why-does-objectint1-equalsobjectushort1-yield-false) –