我有这样的情况object
我想检查与另一个是否相等object
.
public static bool Equals(object a, object b)
{
return a.Equals(b);
}
当出现问题时a = 1 (integer)
and b = 1 (ushort (or basically not integer))
。我想知道这是否不应该产生 true,但它确实返回 false...
Edit
更糟糕的是:
Hashtable ht = new Hashtable();
ht.Add((int)1, "SOME STRING");
ht.Add((short)1, "SOME STRING");
ht.Add((long)1, "SOME STRING");
我认为值“1”应该只允许一次。
Int32.Equals(object) http://msdn.microsoft.com/en-us/library/de3wwa8z(v=vs.110).aspx仅当另一个对象也是 的实例时才返回 trueInt32
:
如果 obj 是 Int32 的实例并且等于 this 的值,则为 true
实例;否则为假。
在代码中(ILSpy
、.NET 4):
public override bool Equals(object obj)
{
return obj is int && this == (int)obj;
}
Since obj is int
返回 false 你会得到一个false
.
Edit:关于您的编辑(Hashtable
使用“相似”键):如果您不想允许重复的对象,请使用Dictionary<int, string>
相反(首选)或仅将整数添加到HashTable
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)