一般的なGetHashCode(T foo)
方法では、であるかどうかを確認しfoo
ますnull
。しかし、私は奇妙なResharperの警告に出くわしました。
次のコードでは、foo
決してできませんnull
か?
private class FooComparer<T> : IEqualityComparer<T> where T: Foo
{
public int GetHashCode(T foo)
{
// resharper warning: "Expression is always false"
if (Object.ReferenceEquals(null,foo)) return 0;
// ... calculate hash
}
}
しかし、私が知る限り、以下は完全に合法です。
Foo foo = null;
var fooComparer = new FooComparer<Foo>();
int hash = fooComparer.GetHashCode(foo);