それは同じことですか?ReferenceEquals(null、obj)はnullと同じですか?= obj?
if (ReferenceEquals(null, obj)) return false;
と
if (null == obj) return false;
それは同じことですか?ReferenceEquals(null、obj)はnullと同じですか?= obj?
if (ReferenceEquals(null, obj)) return false;
と
if (null == obj) return false;
通常、これは==演算子の実装で確認できます。例えば
:
public static bool operator ==(Foo f1, Foo f2)
{
if (ReferenceEquals(f1, f2))
{
return true;
}
if (ReferenceEquals(f1, null) || ReferenceEquals(f2, null))
{
return false;
}
// Now do comparisons
}
あなたは使用したくない:
if (f1 == f2)
それは同じコードに再帰しますので!代替は次のとおりです。
if ((object)f1 == (object)f2)
(ヌルのチェックのために同じ。)
obj
がobject
として入力された場合にも同じことです。
変数の型が静的な等価演算子またはnull演算子を定義している場合、それは異なります。 obj
がNullable<T>
と定義されている場合、コンパイラはステップしてHasValue
をチェックします。