(对不起,如果重复的,我不知道,如果要检查可为空或原语或其他)C# - 如何检查是否需要构造类型的对象?
我创建一个变量类型的对象的数组。它可以是int
,string
,Point
或MyCustomClass
(大概没有虽然枚举,但他们一样int
吧?)。
输入:类型数组元素。
黑匣子:检查是否需要构建类型需要。创建数组,如果需要contruction创建每个元素(使用默认值,因为他们现在不重要)。构造函数必须是无参数的( - >失败函数),但将字符串视为特殊类型。
输出: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;
}
这真的不清楚你想达到的目标。让我们以'string'为例 - 你显然需要一个非空字符串引用的数组,但是这些字符串的内容应该是什么? –
@JonSkeet内容无关紧要。他们不能是空的。 – Bitterblue
你能介绍一些关于这方面的代码吗? – Naren