C# 数组 - CreateInstance() 方法
C# 数组 CreateInstance() 方法用于创建具有指定类型、维度和每个维度长度的数组新实例。
创建的数组可能具有一个或多个维度,具体取决于指定的长度。
当编译时无法确定数组的类型或维度时,此方法尤其有用。
异常
CreateInstance() 方法存在以下异常 -
- ArgumentNullException:如果 elementType 为 null,则抛出此异常。
- ArgumentOutOfRangeException:如果任何维度小于零
- ArgumentException:如果 elementType 无效,则抛出
语法
以下是 C# 数组 CreateInstance() 方法的语法 -
public static Array CreateInstance (Type elementType, int length);
参数
此方法接受以下参数 -
- elementType:指定数组元素的类型。
- length:指定数组每一维的大小。
返回值
此方法返回数组类的实例。
示例 1:创建一维数组
这是使用 CreateInstance() 方法创建一维数组实例的基本示例 -
using System;
class Program
{
static void Main()
{
// 使用 CreateInstance 方法
Array array = Array.CreateInstance(typeof(int), 5);
for (int i = 0; i < array.Length; i++)
{
array.SetValue(i * 10, i);
}
foreach (var item in array)
{
Console.Write(item + " ");
}
}
}
输出
以下是输出 -
0 10 20 30 40
示例 2:创建多维数组
让我们看另一个使用 CreateInstance() 方法创建多维数组实例的示例 -
using System;
class Program
{
static void Main()
{
Array array = Array.CreateInstance(typeof(int), 3, 2);
// 用值填充数组
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 2; j++)
{
array.SetValue((i + 1) * (j + 1), i, j);
}
}
// 打印数组
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 2; j++)
{
Console.Write(array.GetValue(i, j) + " ");
}
Console.WriteLine();
}
}
}
输出
以下是输出 -
1 2 2 4 3 6
示例 3:创建字符串数组
在此 CreateInstance() 方法示例中,我们创建了一个一维字符串数组的实例 -
using System;
class Program
{
static void Main()
{
// Create a one-dimensional array of strings
Array stringArray = Array.CreateInstance(typeof(string), 4);
stringArray.SetValue("Apple", 0);
stringArray.SetValue("Banana", 1);
stringArray.SetValue("Cherry", 2);
stringArray.SetValue("Date", 3);
foreach (var item in stringArray)
{
Console.Write(item + " ");
}
}
}
输出
以下是输出 -
Apple Banana Cherry Date
示例 4:处理无效维度
以下是 CreateInstance() 方法的另一个示例。这里,我们尝试创建一个维度为负的数组 -
using System;
class Program
{
static void Main()
{
try
{
// 尝试创建一个具有负维度的数组
Array array = Array.CreateInstance(typeof(int), -5);
}
catch (Exception ex)
{
Console.WriteLine($"Exception: {ex.Message}");
}
}
}
输出
以下是输出 -
Exception: MonoArgumentException:NULL

csharp_array_class.html