簡體   English   中英

為什么在C#中使用something.Equals(null)時會出現空引用錯誤

[英]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?

由於indvUsernull ,並且indvUser.Equals是您的User對象上的實例方法(即,它需要對象的非null實例),因此.NET將拋出您嘗試使用它的錯誤。

對於這樣的事情,您可以使用以下代碼:

Object.ReferenceEquals(indvUser, null)

或者簡單地:

indvUser == null

由於這兩種方法均未嘗試訪問indvUser對象本身的方法或屬性,因此應避免使用NullReferenceExceptions

排隊:

indvUser.Equals(null)

如果indvUser null,如何在其上調用Equals方法? 它可以簡單地看作是:

null.Equals(null)

您應該將其與indvUser == nullobject.ReferenceEquals(indvUser, null)

Object.Equals是一個不是靜態的方法。 為了調用Equals方法,您必須具有該類的實例。

如果indUser == null ,則將執行null.Equals(null) ,這將引發異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM