为什么我动态创建的自定义类型数组返回null值实例?

时间:2013-01-11 16:36:15

标签: c# arrays createinstance

所以我创建了这个简单的代码来动态创建一个数组 - 期望在索引0和1处有两个“空/未初始化”的对象。但是我得到一个变量为r的对象数组,它们都是null?

我错过了一些如此根本的东西......我不明白。 提前谢谢。

public class myclass
{
    int a;
    string b;
    float c;
}

class Program
{
    static void Main(string[] args)
    {
        Type t = Type.GetType("ConsoleApplication1.myclass");
        var r = Array.CreateInstance(t.GetElementType(), 2);
    }
}

2 个答案:

答案 0 :(得分:2)

这就是数组的工作方式。它们最初填充了default(TheTypeOfTheArray),对于所有引用类型(这是引用类型),它都是null

答案 1 :(得分:0)

创建数组并不意味着初始化其对象。例如,如果ConsoleApplication1.myclass没有无参数构造函数,那么您希望CLR如何隐式地创建它的实例?

比如上课。

class Foo
{
    public Foo(int value)
    {
        Value = value;
    }

    public int Value { get; set; }
}

使用以下代码:

var array = new Foo[10];

您将获得一个Foo[],其中包含十个null个元素。原因如上所述。