如何用类型实例指定的类型元素创建一个数组
问题描述:
我有一个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
类型或命名空间名称'元素类型”不能被发现。你是否缺少using指令或程序集引用?
答
显然,因为不是一个类型定义您提供(一Type
类型,在这里无关紧要的)可变它不工作。
的Array
类有像你需要创建一个数组的方法:Array.CreateInstance(Type, int)
:
var newArray = Array.CreateInstance(elementType, 34);
+0
谢谢,你说得对。通过使用CreateInstance方法既可以用于新数组,也可以用于包含元素,我会根据需要进行操作。非常感谢你! – Cherno
我使用C#。对不起,如果我忘记包含这些信息。 – Cherno