91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

CLR中靜態構造函數如何使用

發布時間:2021-07-14 14:37:04 來源:億速云 閱讀:117 作者:Leah 欄目:編程語言

本篇文章給大家分享的是有關CLR中靜態構造函數如何使用,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

CLR會選擇如下時間之一來調用靜態構造函數:

1,在類型的***個實例創建之前,或類型的非繼承字段或成員***次訪問之前。這里的“之前”,代表前后銜接的意思。這里的時刻是精確的!

2,在非繼承的靜態字段或成員***次訪問之前的某個時刻,具體時刻不定!

由于調用的時刻不確定,所以我們***不要編寫依賴于特定的靜態構造函數的執行順序的代碼,這樣很容易產生不可預料的后果!

下面大家看三個Demo,我們來更加深入的看看靜態構造函數的一些有趣的行為:

Demo1:    static void Main(string[] args)  {  Console.WriteLine(B.strText);  }  public class A  {  public static string strText;  static A()  {  strText = "aaaa";  }  }  public class B : A  {  static B()  {  strText = "bbbb";   }  }

大家猜猜結果是什么,可能有人認為輸出的是bbbb,因為訪問B.strText需要調用B類的靜態構造函數static B()。實際上輸出的結果是aaaa,因為strText是類A的靜態字段,而類B只是繼承了這個字段,所以這里會調用類A的靜態構造函數static A(),所以輸出結果是aaaa。這也沒有什么真正可說的,相信大家都能看出這個結果的。

下面看看第二個Demo:

Demo2:    static void Main(string[] args)  {  B b = new B();  A a = new A();   Console.WriteLine(B.strText);   }  public class A  {  public static string strText;  static A()  {  strText = "aaaa";   }  }  public class B : A  {  static B()  {  strText = "bbbb";   }  }

大家猜猜輸出結果是什么,可能有人認為會輸出aaaa,理由是new B()之前會調用static B(),然后new A()之前需要調用static A,這樣結果是aaaa,但是實際情況并非如果,正確的結果是bbbb,原因如下:


在執行new B(); 之前,B類的靜態構造函數會調用,也就是會調用:

static B()  {   strText="bbbb";  }

當執行到strText=“bbbb"的時候,這時需要訪問strText字段,而B的strText字段是從A類繼承的,所以這里需要會先調用:

static A()  {   strText="aaaa";   }


執行這個函數以后strText的值是aaaa

然后代碼又回到static B()中,這時才執行static B()中的strText="bbbb"這行,所以strText這時的值是bbbb

當執行A a=new A();的時候,不會在調用A的靜態構造函數了,因為前面已經調用過了,靜態函數在整個應用程序域的生命周期中只會調用一次!

以上就是CLR中靜態構造函數如何使用,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

clr
AI

镇江市| 奉节县| 保康县| 南华县| 岫岩| 通海县| 洛南县| 丁青县| 荆州市| 石狮市| 呈贡县| 望江县| 中江县| 秦皇岛市| 兴安县| 环江| 辽宁省| 梁山县| 苍梧县| 泸西县| 张家口市| 辽阳县| 永修县| 莱西市| 资兴市| 贡嘎县| 长沙县| 佛山市| 江西省| 蚌埠市| 嘉义市| 浦县| 章丘市| 江都市| 突泉县| 万荣县| 阜新| 含山县| 嘉峪关市| 申扎县| 琼中|