A C# array can be null
. As a field, an array is by default initialized to null
. When using local variable arrays, we must specify this explicitly.
The C# language initializes array reference elements to null
when created with the new keyword. Arrays that are fields are automatically set to null
.
This example shows that static
arrays (such as int[]
fields on a type) are by default initialized to null
. This occurs automatically, with no special code.
null
array reference.null
.int[]
are implicitly assigned to null
.int[]
) expression is equal to null
. It writes to the screen with Console.WriteLine
.using System; class Program { // Empty array. static int[] _arrayField1 = new int[0]; // Null. static int[] _arrayField2; static void Main() { // Shows an empty array is not a null array. int[] array1 = new int[0]; Console.WriteLine(array1 == null); // Shows how to initialize a null array. int[] array2 = null; Console.WriteLine(array2 == null); // Static and instance field arrays are automatically null. Console.WriteLine(_arrayField2 == null); // Default expression for arrays evaluates to null. Console.WriteLine(default(int[]) == null); } }False True True True
Array elements are separate in memory from the array reference. The elements are initialized to null
if the type is a reference type. Value types are initialized to 0.
null
.string
array of 3 elements. These elements are initialized to null
. We can test them against null
.NullReferenceException
.using System; // Value for all reference elements in new array is null. string[] array = new string[3]; Console.WriteLine(array[0] == null); Console.WriteLine(array[1] == null); Console.WriteLine(array[2] == null);True True True
In a new array, each element has its memory location set to all zero bits. Multiple zero bits all mean the same thing—they are represented with the decimal value 0.
We tested array references for the null
value. Array elements are initialized to null
at creation—we never need to loop over and set elements to null
in a newly-created array.