我想知道如何比较两个盒装整数(可以是带符号或无符号的)是否相等。
例如,看一下下面的情况:
例如,看一下下面的情况:
// 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
,它是一个重载(Equals(int)
vsEquals(object)
)。 - Rob