¿Es lo mismo?¿Es ReferenceEquals (null, obj) lo mismo que null == obj?
if (ReferenceEquals(null, obj)) return false;
y
if (null == obj) return false;
¿Es lo mismo?¿Es ReferenceEquals (null, obj) lo mismo que null == obj?
if (ReferenceEquals(null, obj)) return false;
y
if (null == obj) return false;
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.)
Es lo mismo si se escribe como obj
object
.
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
.