在 C# 3 中,添加了初始化程序。这是一个很棒的功能。然而,有一件事让我感到困惑。
初始化类时,通常必须指定要初始化的成员变量或属性。例如:
class C { public int i; }
public void blah() {
C c = new C() { i = 1 };
}
我认为,数组语义从一开始就存在于 C# 中。但他们不会那样做。例如
public void foo()
{
int[] i = new int[] { 0, 1, 2, 3 };
}
一切都很好,但是具有数组语义的类呢?
public void bar()
{
List<int> li = new List<int>() { 0, 1, 3, 3 };
}
List 只是一个类,就像任何其他类一样(尽管它是一个泛型)。
我试图弄清楚编译器如何初始化 List 成员。这是在幕后做的某种魔术吗?或者这与在类上定义的索引器有关吗?
谢谢。