C# Array.CreateInstance MethodUse the Array.CreateInstance method to create arrays of a type known at runtime.
dot net perls
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.
Typeof, nameof
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
using System; class Program { static void Main() { // [1] Create a one-dimensional array of integers. { Array array = Array.CreateInstance(typeof(int), 10); int[] values = (int[])array; Console.WriteLine(values.Length); } // [2] Create a two-dimensional array of bools. { Array array = Array.CreateInstance(typeof(bool), 10, 2); bool[,] values = (bool[,])array; values[0, 0] = true; Console.WriteLine(values.GetLength(0)); Console.WriteLine(values.GetLength(1)); } } }
10 10 2
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.
© 2007-2021 sam allen. see site info on the changelog