[英]If null.Equals(null) why do I get a NullReferenceException
[英]Why do I get a null reference error when using something.Equals(null) in C#
當我嘗試檢查某些內容是否為null時,我不斷收到null引用錯誤。 我有一個名為User的類,並且像這樣初始化變量indvUser
User indvUser = api.Users.SearchByExternalId(session.UserInfo.UserId.ToString())
.Users.FirstOrDefault();
然后我想檢查indvUser是否為null
if (indvUser.Equals(null))
{
int a = 1;
}
但是我使用我不明白的Equals(null)
時出現空引用錯誤。 如果它實際上是null,即沒有值, Equals(null)
是否不應該返回true?
由於indvUser
為null
,並且indvUser.Equals
是您的User
對象上的實例方法(即,它需要對象的非null實例),因此.NET將拋出您嘗試使用它的錯誤。
對於這樣的事情,您可以使用以下代碼:
Object.ReferenceEquals(indvUser, null)
或者簡單地:
indvUser == null
由於這兩種方法均未嘗試訪問indvUser
對象本身的方法或屬性,因此應避免使用NullReferenceExceptions
排隊:
indvUser.Equals(null)
如果indvUser
為 null,如何在其上調用Equals
方法? 它可以簡單地看作是:
null.Equals(null)
您應該將其與indvUser == null
或object.ReferenceEquals(indvUser, null)
Object.Equals是一個不是靜態的方法。 為了調用Equals方法,您必須具有該類的實例。
如果indUser == null
,則將執行null.Equals(null)
,這將引發異常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.