0
我在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的excecution的順序初始值設定項和Y的初始值設定項可以按任何順序發生?
我總是得到第二個結果(我期望)在我的系統上,但看不到第一個結果也能實現?
謝謝。
另一個不好的微軟例子。它總是第二,因爲聲明:B.Y,A.X.如果你有A.X,B.Y.關鍵是初始化將按照您使用變量的順序發生,而不是由寫入類的方式來控制。 – jdweng
有趣。在writeline之前在F函數中放置一個隨機數的線程睡眠並運行應用程序幾次以查看它的功能。不幸的是,我剛離開辦公室,所以無法自己測試。 –
@jdweng,哦....我明白爲什麼這是一個誤導性的例子。 – user3723486