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
TrueArray 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
TrueIn 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.