有点奇怪的问题...
但是有人能给我一个为什么这是预期行为的理由吗?
这对我来说似乎完全不同寻常....
//Makes perfect sense
object o = null;
o.GetHashCode().Dump();
NullReferenceException:对象引用未设置为对象的实例。
//Seems very odd
int? i = null;
i.GetHashCode().Dump();
0
这显然是表示:
int? zero = 0;
int? argh = null;
zero.GetHashCode() == argh.GetHashCode(); //true
Nullable<T>.GetHashCode
的说明是:如果HasValue
属性为真,则返回Value
属性的对象哈希码;如果HasValue
属性为假,则返回零。由于此处的HasValue
为假,因此预期答案应该是0。 - EqualskNullable<int>
。结构体始终具有哈希码,不会出现空引用异常。 - Hans Passant