2009-06-09 57 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

是如果obj的類型爲object同樣的事情。

如果變量的類型定義了靜態相等運算符或null運算符,則它將不同;如果obj被定義爲Nullable<T>,那麼編譯器會介入並檢查HasValue

相關問題