(如果重复,我很抱歉,我不确定是否检查可空或原语或其他)
我正在创建变量类型的对象数组。它可以是int
, string
, Point
or MyCustomClass
(虽然可能没有枚举,但它们和int
正确的一样?)。
输入:数组元素的类型。
黑盒:检查是否需要构造类型。创建数组,如果需要构造创建每个元素(使用默认值,因为此时它们无关紧要)。构造函数必须是无参数的( -> 失败函数),但将字符串视为特殊类型。
输出:( object
它的运行时类型是int[]
或string[]
或Point[]
等)
我面临的问题是我创建了一个充满
null
. 原语和结构很好地工作,我int[]
没有问题,但类导致“ null[]
”。
到目前为止我所拥有的(不确定我是否都抓住了它们):
public object createArray(Type arrayElementType, int arrayLength)
{
Array a = Array.CreateInstance(arrayElementType, arrayLength);
if (!arrayElementType.IsPrimitive) // correct would be: if (!arrayElementType.IsValueType)
for (int j = 0; j < arrayLength; j++)
a.SetValue(Activator.CreateInstance(arrayElementType), j);
return a;
}