我是一名学习C#的C++程序员.我目前正在Nutshell中阅读C#4.0.
我在第74页上发表了这句话/ snipet:
静态字段初始值设定项按声明字段的顺序运行.以下示例说明了这一点:X初始化为0,Y初始化为3.
class Foo
{
public static int X = Y; // 0
public static int Y = 3; // 3
}
Run Code Online (Sandbox Code Playgroud)
我不明白如何在Y中分配值,而不首先声明Y. 我在这里错过了什么吗?
顺便说一下,来自C++背景,我倾向于使用术语ctor作为构造函数 - 但是,我还没有在C#中使用这个术语 - ctor世界中也使用了ctor一词吗?
[编辑]
同一页面上的另一个例子(在前面提到的书中)是这样的:
class Program
{
static void Main() { Console.WriteLine (Foo.X); } // 3
}
class Foo
{
public static Foo Instance = new Foo();
public static int X = 3;
Foo() { Console.WriteLine (X); } // 0
}
Run Code Online (Sandbox Code Playgroud)
该书陈述(上例):
该示例打印0后跟3,因为实例化Foo的字段初始值设定项在X初始化为3之前执行:
我在这些例子中还有一些问题.
这两个示例都出现在标题为静态构造函数和字段初始化顺序的部分下,但代码示例中没有显示静态ctor - 至少不是我能够轻易识别的.我期待一个静态ctor与该类具有相同的名称,是无参数的,并且前面是' static '关键字.所以我不明白这些例子与章节标题的关系.我在这里错过了什么? …