This dreaded error message happens when you get a NullReferenceException.
This exception is thrown when you try to access a member: for instance, a method or a property on a variable that currently holds a null reference.
What Are References?
We already know that the NullReferenceException is caused by a null reference
In .NET, you can divide data types into two subtypes: value types and reference types.
If you have a variable of a value type, it stores the value itself; however, reference types don’t hold the value itself. They hold a reference that points to where the object lives in memory.
Types such as int, DateTime, and boolean are value types and classes are reference types.
When you try to call a method or another member on the said variable, you got the NullReferenceException.
Understanding the NullReferenceException:
Null reference errors are responsible for a good percentage of all application bugs.
Here are some ways to avoid NullReferenceException:
Null Conditional Operator:
Use the Null Conditional Operator to Avoid NullReferenceExceptions:
One of the best new additions to C# was the null conditional operator. Instead of having a crazy amount of “variable != null” type checks, you can use the “?” and your code will short circuit and return null instead of throwing the exception.
Use Null Coalescing to Avoid NullReferenceExceptions:
?? operator works great for providing a default value for a variable that is null. It works with all nullable data types.
Methods to Prevent Null Reference Exceptions
- Initialize variables with valid values.
- If a variable can be null, then check for null and handle it appropriately
- Use the ? operator on methods when possible. stringvar?.ToUpper();
- Use tools like Resharper to help point out potential null reference exceptions
Avoiding NullReferenceException With C# Nullable Types:
What if this decision was enforced by the compiler itself, preventing you and other developers from assigning null.
The compiler is letting me know that “numbers” can be null.
Another step for NullReferenceException is to use a variable that should be initialized in the Inspector. If you forget to do this, then the variable will be null. A different way to deal with NullReferenceException is to use a try/catch block. For example, this code:
In this code example, the variable called myLight is a Light which should be set in the Inspector window. If this variable is not set, then it will default to null.
NullReferenceException happens when your script code tries to use a variable that isn’t set (referencing) and object and the error message that appears in C# tells you a great deal about where in the code the problem happens.NullReferenceException can be avoided by writing code that checks for null before accessing an object or uses try/catch blocks.