这是一回事吗?
if (ReferenceEquals(null, obj)) return false;
Run Code Online (Sandbox Code Playgroud)
和
if (null == obj) return false;
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 32
您通常会在==运算符的实现中看到这一点.
例如:
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
}
Run Code Online (Sandbox Code Playgroud)
你不想使用:
if (f1 == f2)
Run Code Online (Sandbox Code Playgroud)
因为那会递归到相同的代码!另一种选择是:
if ((object)f1 == (object)f2)
Run Code Online (Sandbox Code Playgroud)
(对于空检查也一样.)
Mar*_*ell 19
如果obj输入为同样的事情object.
如果变量的类型定义了静态相等运算符或空运算符,那么它将是不同的; 如果obj定义为,Nullable<T>那么编译器将介入并检查HasValue.