猜猜按鈕的結果是啥。
? ? public partial class Form1 : Form
? ? {
? ? ? ? public Form1()
? ? ? ? {
? ? ? ? ? ? InitializeComponent();
? ? ? ? }
? ? ? ? private void Form1_Load(object sender, EventArgs e)
? ? ? ? {
? ? ? ? }
? ? ? ? public static bool flag = true;
? ? ? ? private void button1_Click(object sender, EventArgs e)
? ? ? ? {
? ? ? ? ? ? string s = flag.ToString();
? ? ? ? ? ? textBox1.Text=s;
? ? ? ? }
? ? }
一個C# 調試的處理
結果是False。前天調試時,無意中遇到的。熱加載的處理。
在調試的時候,在代碼中增加??public static bool flag = true; 這樣的靜態成員。并且可以在熱加載后使用這個成員變量,但是這個成員變量并沒有初始化,所以是false。
俺調試時,臨時加了個?靜態成員變量。然后熱加載 ,調試,遇到了這個。
在C#中,靜態變量是在類第一次被加載到內存時初始化的。這意味著靜態變量在第一次被訪問時,或者在第一次被引用之前,由.NET運行時自動初始化。靜態變量屬于類本身,而不是類的某個特定實例,因此它們是在類加載到應用程序域時創建的。
靜態變量的初始化時機
-
首次訪問:當類的靜態成員首次被訪問時,例如通過一個靜態方法或者通過直接訪問一個靜態字段,靜態變量會被初始化。
-
類加載:在.NET中,類加載通常發生在以下幾種情況:
-
類的靜態構造函數被調用。
-
類的靜態字段被訪問。
-
類的靜態方法被調用。
-
類的類型被用于反射。
-
靜態構造函數的角色
C#還允許定義一個特殊的靜態構造函數(也稱為類型構造函數),其特征是沒有參數,且不能被顯式調用。靜態構造函數在類第一次被加載到內存時自動執行,用于初始化靜態字段。