如何创建具有由type实例指定类型的元素的数组



我有一个FieldInfo,我知道它是一个数组,所以我使用它的值来声明一个Array实例,并获得数组元素的类型:

void Test(object baseInstance, FieldInfo baseInstanceField) {
    Array a = (Array)baseInstanceField.GetValue(baseInstance);
    Type elementType = TypeSystem.GetElementType(baseInstance.GetType());
}

现在我想用反射初始化一个具有特定长度的elementType类型的新数组。我该怎么做呢?稍后我将不得不访问这个新数组的元素。

elementType[] newArray = new elementType[34]; //doesn't work

类型或命名空间名称' elementType'找不到。您是否缺少using指令或程序集引用?

显然它不起作用,因为您提供的不是类型定义,而是变量(Type类型,这里不相关)。

Array类有一个创建数组的方法:Array.CreateInstance(Type, int):

var newArray = Array.CreateInstance(elementType, 34);

最新更新