27
這是一回事嗎?ReferenceEquals(null,obj)與null == obj相同嗎?
if (ReferenceEquals(null, obj)) return false;
和
if (null == obj) return false;
這是一回事嗎?ReferenceEquals(null,obj)與null == obj相同嗎?
if (ReferenceEquals(null, obj)) return false;
和
if (null == obj) return false;
您通常會在執行==運算符時看到這一點。
例如:
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
}
你不想使用:
if (f1 == f2)
,因爲這將遞歸到相同的代碼!另一種方法是:
if ((object)f1 == (object)f2)
(與同爲空校驗)。
是如果obj
的類型爲object
同樣的事情。
如果變量的類型定義了靜態相等運算符或null運算符,則它將不同;如果obj
被定義爲Nullable<T>
,那麼編譯器會介入並檢查HasValue
。