È la stessa cosa?ReferenceEquals (null, obj) è la stessa cosa di null == obj?
if (ReferenceEquals(null, obj)) return false;
e
if (null == obj) return false;
È la stessa cosa?ReferenceEquals (null, obj) è la stessa cosa di null == obj?
if (ReferenceEquals(null, obj)) return false;
e
if (null == obj) return false;
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.)
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
.