我想知道如何比較兩個盒裝整數(可以是有符號或無符號)彼此是否相等。比較兩個整數對象是否相等,無論類型
例如,看看這個場景:
// 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) –