2009-06-09 19 views

Respuesta

32

Normalmente, esto se vería en la implementación de un operador ==.

Por ejemplo:

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 
} 

Usted no desea utilizar:

if (f1 == f2) 

porque eso recursivo en el mismo código! Una alternativa es:

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

(Y lo mismo para el cheque nulo.)
19

Es lo mismo si se escribe como objobject.

Si el tipo variable define un operador estático de igualdad o un operador nulo, entonces será diferente; y si obj se define como Nullable<T>, el compilador intervendrá y marcará HasValue.

Cuestiones relacionadas