【发布时间】:2013-08-01 06:58:00
【问题描述】:
(如果重复,我很抱歉,我不确定是否要检查可空或原语或其他)
我正在创建变量类型的对象数组。它可以是int、string、Point 或MyCustomClass(虽然可能没有枚举,但它们与int 相同,对吧?)。
输入: 数组元素的类型。
黑盒:检查是否需要构造类型NEEDS。创建数组,如果需要构造创建每个元素(使用默认值,因为此时它们无关紧要)。构造函数必须是无参数的(-> 失败函数),但将字符串视为特殊类型。
输出: 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 内容无关紧要。它们不能为空。
-
你能展示一些关于这个的代码吗?
-
如果您告诉我们您打算如何使用这个数组,我们可能会提供更好的建议。目前,这感觉像是XY problem
-
@mini-me - 虽然人们继续尝试做奇怪或离奇的事情而没有提供背景,但总是值得让他们停下来,退后一步,画一个更大的图景,然后最终可能不会为可能会被更简单地解决的问题建立一个 Rube-Goldberg 解决方案。
标签: c# arrays object reflection