0

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

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

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);
    }
}
4

2 回答 2

2

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

于 2013-01-11T16:37:55.540 回答
0

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

以这堂课为例。

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

    public int Value { get; set; }
}

使用以下代码:

var array = new Foo[10];

你会得到一个Foo[]里面有十个null元素的。原因在上面已经解释过了。

于 2013-01-11T16:37:44.130 回答