我在MSDN上读到了
的输出using System;
class Test
{
static void Main()
{
Console.WriteLine("{0} {1}", B.Y, A.X);
}
public static int F(string s)
{
Console.WriteLine(s);
return 1;
}
}
class A
{
public static int X = Test.F("Init A");
}
class B
{
public static int Y = Test.F("Init B");
}
可以是
Init A
Init B
1 1
或
Init B
Init A
1 1
但我无法弄清楚为什么X的初始化程序和Y的初始化程序的执行顺序可能以任何顺序发生?
我总是在我的系统上得到第二个结果(我预期的)但是看不出第一个结果是如何实现的?
感谢。
答案 0 :(得分:2)
您正在阅读语言规范,该规范告诉您根据语言规范允许发生什么。您在您正在使用的语言的特定实现中看到了一致的行为,并且该行为与规范一致,因此一切都很顺利。
语言规范警告你,你不应该依赖程序中的那种行为,因为在未来的运行时版本中(或者在不同的处理器/平台/星期几),行为可能会改变。