2009-06-09 16 views

risposta

32

Di solito lo si vede nell'implementazione di un operatore ==.

Per esempio:

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 
} 

Non si vuole utilizzare:

if (f1 == f2) 

perché che ricorsivamente nello stesso codice! Un'alternativa è:

if ((object)f1 == (object)f2) 

(e lo stesso per il controllo nullo.)
19

E 'la stessa cosa se obj è tipizzato come object.

Se il tipo di variabile definisce un operatore di uguaglianza statica o un operatore nullo, allora sarà diverso; e se obj è definito come Nullable<T>, il compilatore interverrà e controllerà invece HasValue.

Problemi correlati