(如果重复,我很抱歉,我不确定是否检查可空或原语或其他)
我正在创建变量类型的对象数组。它可以是int, string, Pointor 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;
}