为什么我动态创建的自定义类型数组返回null值实例
本文关键字:返回 数组 null 实例 类型 自定义 动态 创建 为什么 | 更新日期: 2023-09-27 17:51:18
所以我创建了这个简单的代码来动态地创建一个数组-期望在索引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);
}
}
这就是数组的工作方式。它们最初使用default(TheTypeOfTheArray)
填充,对于所有引用类型(这是一个引用类型)都是null
。
创建数组并不意味着初始化它的对象。例如,如果ConsoleApplication1.myclass
没有无参数构造函数,您如何期望CLR隐式地创建它的实例?
以这门课为例。
class Foo
{
public Foo(int value)
{
Value = value;
}
public int Value { get; set; }
}
使用以下代码:
var array = new Foo[10];
你会得到一个Foo[]
,里面有十个null
元素。原因如上所述。