2009-06-09 14 views

答えて

32

通常、これは==演算子の実装で確認できます。例えば

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) 

(ヌルのチェックのために同じ。)
19

objobjectとして入力された場合にも同じことです。

変数の型が静的な等価演算子またはnull演算子を定義している場合、それは異なります。 objNullable<T>と定義されている場合、コンパイラはステップしてHasValueをチェックします。

関連する問題