自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C#靜態(tài)變量初始化實例詳解

開發(fā) 后端
C#靜態(tài)變量初始化的創(chuàng)建是在什么時候呢?C#靜態(tài)變量初始化的具體是現(xiàn)實例是什么呢?那么本文就向你詳細介紹C#靜態(tài)變量初始化的具體事宜。

C#靜態(tài)變量初始化是什么時候進行的呢?我們知道類的靜態(tài)字段變量初始值設(shè)定項對應(yīng)于一個賦值序列,這些賦值按照它們在相關(guān)的類聲明中出現(xiàn)的文本順序執(zhí)行。

對于C#靜態(tài)變量初始化,那么如果類中存在靜態(tài)構(gòu)造函數(shù)則靜態(tài)字段初始值設(shè)定項的執(zhí)行在該靜態(tài)構(gòu)造函數(shù)即將執(zhí)行前發(fā)生。否則,靜態(tài)字段初始值設(shè)定項在***次使用該類的靜態(tài)字段之前先被執(zhí)行,但實際執(zhí)行時間依賴于具體的實現(xiàn)。在以下示例中:

C#靜態(tài)變量初始化實例應(yīng)用:

  1. using System;  
  2. class Test   
  3. ...{   
  4. static void Main() ...{  
  5.  Console.WriteLine("{0} {1}", B.Y, A.X);  
  6. }  
  7. public static int F(string s) ...{  
  8.  Console.WriteLine(s);  
  9.  return 1;  
  10. }  
  11. }  
  12. class A  
  13. ...{  
  14. public static int X = Test.F("Init A");  
  15. }  
  16. class B  
  17. ...{  
  18. public static int Y = Test.F("Init B");  

或者產(chǎn)生如下輸出:

  1. Init A  
  2. Init B  
  3. 1 1 

或者產(chǎn)生如下輸出:

  1. Init B  
  2. Init A  
  3. 1 1 

這是因為 X 的初始值設(shè)定項和 Y 的初始值設(shè)定項的執(zhí)行順序無法預(yù)先確定,上述兩種順序都有可能發(fā)生;***能夠確定的是:它們一定會在對那些字段的引用之前發(fā)生。但是,下面的示例:

  1. using System;  
  2. class Test  
  3. ...{  
  4. static void Main() ...{  
  5.  Console.WriteLine("{0} {1}", B.Y, A.X);  
  6. }  
  7. public static int F(string s) ...{  
  8.  Console.WriteLine(s);  
  9.  return 1;  
  10. }  
  11. }  
  12. class A  
  13. ...{  
  14. static A() ...{}  
  15. public static int X = Test.F("Init A");  
  16. }  
  17. class B  
  18. ...{  
  19. static B() ...{}  
  20. public static int Y = Test.F("Init B");  

所產(chǎn)生的輸出必然是:

  1. Init B  
  2. Init A  
  3. 1 1 

這是因為關(guān)于何時執(zhí)行靜態(tài)構(gòu)造函數(shù)的規(guī)則規(guī)定:B的靜態(tài)構(gòu)造函數(shù)(以及B的靜態(tài)字段初始值設(shè)定項)必須在A的靜態(tài)構(gòu)造函數(shù)和字段初始值設(shè)定項之前運行。

C#靜態(tài)變量初始化的基本情況就向你介紹到這里,希望對你了解和學(xué)習C#靜態(tài)變量初始化有所幫助。

【編輯推薦】

  1. C#線程優(yōu)先級淺析
  2. C#語言學(xué)習階段淺析
  3. C#讀取word文檔實例淺析
  4. C#讀取Word文檔異常處理解析
  5. C#反射靜態(tài)方法開發(fā)實例詳解
責任編輯:仲衡 來源: 博客園
相關(guān)推薦

2009-08-31 10:30:29

C#變量初始化

2009-08-31 10:18:00

C#靜態(tài)變量定義C#靜態(tài)變量

2009-09-02 16:52:55

C#數(shù)組初始化

2009-08-27 10:44:21

C#靜態(tài)變量

2009-08-28 11:24:48

C#一維數(shù)組初始化

2009-08-28 11:09:35

C#數(shù)組初始化

2009-08-31 10:38:34

C#變量初始化

2009-08-31 10:00:07

C#靜態(tài)變量

2009-09-18 11:15:52

C#數(shù)組初始化

2009-07-31 17:51:27

C#對象初始化

2009-08-28 12:47:30

C#靜態(tài)方法應(yīng)用

2009-09-17 16:06:22

C#數(shù)組初始化

2009-08-27 10:31:39

C#對象初始化器

2009-08-28 11:43:26

C#數(shù)組初始化

2009-08-31 09:41:05

C#反射靜態(tài)方法開發(fā)

2009-08-26 15:28:52

C#對象集合初始化器

2009-09-17 16:17:41

C#參差數(shù)組初始化

2011-08-10 17:16:01

Objective-C靜態(tài)變量

2011-06-02 14:25:45

靜態(tài)變量

2010-02-01 14:21:24

C++初始化列表
點贊
收藏

51CTO技術(shù)棧公眾號