對不起,如果這是一個新手問題,但我找不到像搜索S.O.我已經繼承了一個C#程序來增強,它主要是一個DLL。C#初始化困惑 - 一個獨立的靜態類
我在一種僞代碼中表達了DLL來解釋我的問題: 該DLL有4個類,3個「常規」類和第4類公共靜態變量,這些變量被全局變量用作全局變量該DLL
public class CMain
{
public CMain()
{
CFoo Foo = new CFoo(); // CFoo's c'tor is called
CBar Bar = new CBar(); // CBar's c'tor is called
CGlobals.v1 = 123;
}
}
public class CFoo
{
...
}
public class CBar
{
...
}
public sealed class CGlobals
{
public static int v1 = 0;
public static int v2 = 0;
}
當CMAIN從DLL的調用者實例化,在調試器中CGlobals的靜態變量之前什麼都發生初始化第一的休息。然後CMain的構造函數被調用。
當我查找C#初始化順序時,我發現類的靜態成員在類構造函數被調用之前被初始化,但是CGlobals不是任何成員;它只是坐在那裏,獨自一人,並從其他班級參考。
一切似乎都奏效,但它讓我感到緊張,因爲我不知道它遵循的規則。有人可以解釋一下與此有關的初始化順序規則是什麼,以及這是否有什麼危險?
您確定在調用CMain的構造函數之前初始化了CGLobals靜態字段嗎?爲什麼要在初次使用CGlobals時初次使用它? –