Array.CreateInstance creates typed arrays. It does not require the type to be known at compile-time. It is a factory method. When calling it in a C# program, we must specify the size of the target array.
This program has 2 sections: in the first section, we create a single-dimensional array of ints. In the second, we create a two-dimensional array. To call Array.CreateInstance, we must pass a Type pointer as the first argument.
Tip We could pass a variable reference of type "Type" instead of the typeof() operator result.
So To create a one-dimensional array, only pass one integer after the type. To create a two-dimensional array, pass 2 integers.
Discussion. Why would we use the Array.CreateInstance method? Perhaps a program does not know the type of elements we want to create an array of at compile-time. We could pass any Type reference to Array.CreateInstance.
And This Type does not need to be statically determined (before execution) by the C# compiler.
Note With newer versions of the C# language, generic types have alleviated this requirement.
C# program that uses Array.CreateInstance method
static void Main()
//  Create a one-dimensional array of integers.
Array array = Array.CreateInstance(typeof(int), 10);
int values = (int)array;
//  Create a two-dimensional array of bools.
Array array = Array.CreateInstance(typeof(bool), 10, 2);
bool[,] values = (bool[,])array;
values[0, 0] = true;
Summary. Array.CreateInstance is a way to construct arrays in memory using parameters. We do not need to know at compile-time what type of array will be created. As a factory method, Array.CreateInstance returns the abstract base class Array.