【发布时间】:2015-11-13 17:01:45
【问题描述】:
我在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 的初始化程序的执行顺序可以按任何顺序发生?
我总是在我的系统上得到第二个结果(这是我所期望的),但看不到第一个结果是如何实现的?
谢谢。
【问题讨论】:
-
这并不是说特定的运行时实现会随机产生任一输出。它是说运行时实现者可以按照他们选择的顺序执行静态字段初始化器,从而产生任一输出。可能不存在产生第一个输出的实现。
标签: c# static initialization field