'C# Object reference not set to an instance of an object

I have the following code:

public void SetUser(User user)
{
   string streetNumber = "";

   if (user.Address.StreetNo != null)
      streetNumber = user.Address.StreetNo.ToString();
   else
     streetNumber = "";
}

I get the ever popular

Object reference not set to an instance of an object.

issue.



Solution 1:[1]

public void SetUser(User user)
{
   string streetNumber = "";

   if (user != null && user.Address != null && user.Address.StreetNo != null) {
      streetNumber = user.Address.StreetNo.ToString();
   }
}

Taking into account @CKoenig's suggestion, the following throws an exception if the user or user.Address are null:

public void SetUser(User user)
{

   if (user == null) {
       throw new System.ArgumentNullException("user", "user cannot be null");
   }

   if (user.Address == null) {
       throw new System.ArgumentNullException("Address", "Address cannot be null");
   }
   
   string streetNumber = "";

   if (user.Address.StreetNo != null) {
      streetNumber = user.Address.StreetNo.ToString();
   }
}

Solution 2:[2]

public void SetUser(User user) 
{    
   string streetNumber = String.Empty;     

   if (user!= null 
       && user.Address != null 
       && user.Address.StreetNo != null)       
   {
         streetNumber = user.Address.StreetNo.ToString();    
   }
}

Solution 3:[3]

Either user is null, or user.Address is null. You need to test them too.

Solution 4:[4]

Check your stacktrace and:

  • user
  • user.Address
  • user.Address.StreetNo

with an if ... == null then ...

Solution 5:[5]

if (user != null
    && user.Address != null
    && user.Address.StreetNo != null)
{
    // ...
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 vinzee
Solution 2 sll
Solution 3 cdhowie
Solution 4 Random Dev
Solution 5 k06a