Est-ce la même chose?Est-ce que ReferenceEquals (null, obj) est la même chose que null == obj?
if (ReferenceEquals(null, obj)) return false;
et
if (null == obj) return false;
Est-ce la même chose?Est-ce que ReferenceEquals (null, obj) est la même chose que null == obj?
if (ReferenceEquals(null, obj)) return false;
et
if (null == obj) return false;
Vous verriez généralement ceci dans l'implémentation d'un opérateur ==.
Par exemple:
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
}
Vous ne voulez pas utiliser:
if (f1 == f2)
parce que cela va dans le même récursif code! Une alternative est:
if ((object)f1 == (object)f2)
(Et même pour le contrôle nul.)
Il est la même chose si obj
est typée comme object
.
Si le type de la variable définit un opérateur d'égalité statique ou un opérateur null, il sera différent; et si obj
est défini comme Nullable<T>
alors le compilateur interviendra et vérifiera HasValue
à la place.