C#靜態建構函式及靜態變數學習
靜態建構函式:
(1)用於對靜態欄位、只讀欄位等的初始化。
(2)新增static關鍵字,不能新增訪問修飾符,因為靜態建構函式都是私有的。
(3)類的靜態建構函式在給定應用程式域中至多執行一次:只有建立類的例項或者引用類的任何靜態成員才激發靜態建構函式
(4)靜態建構函式是不可繼承的,而且不能被直接呼叫。
(5)如果類中包含用來開始執行的 Main 方法,則該類的靜態建構函式將在呼叫 Main 方法之前執行。
(6)任何帶有初始值設定項的靜態欄位,則在執行該類的靜態建構函式時,先要按照文字順序執行那些初始值設定項。
(7)如果沒有編寫靜態建構函式,而這時類中包含帶有初始值設定的靜態欄位,那麼編譯器會自動生成預設的靜態建構函式。
經典例子:
1/**//**************************************************
2* 靜 態 構 造 函 數 練 習
3* (1)①②③……為執行順序
4* (2)輸出結果: static A()
5* static B()
6* X = 1, Y = 2
7***************************************************/
8using System;
9class A
10{
11public static int X;
12
13static A() //④ 執行完後返回到③
14{
15X = B.Y + 1;
16Console.WriteLine("static A()");
17}
18}
19
20class B
21{
22public static int Y = A.X + 1; //③ 呼叫了A的靜態成員,
23// 轉到A的靜態建構函式---->
24
25static B() //② 如果帶有初始值設定項的靜態欄位,
26// 執行該類的靜態建構函式時,
27// 先要按照文字順序執行那些初始值設定項。
28// 轉到初始值設定項---->
29{
30Console.WriteLine("static B()");
31}
32
33static void Main() //① 程式入口,
34// 如果類中包含用來開始執行的 Main 方法,
35// 該類的靜態建構函式將在呼叫 Main 方法之前執行。
36// 轉到B的靜態建構函式---->
37{
38Console.WriteLine("X = {0}, Y = {1}", A.X, B.Y);//⑤ 輸出結果
39Console.ReadLine();
40}
41}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-591960/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 靜態變數變數
- C++靜態函式C++函式
- 【C++】靜態持續變數?如何建立靜態持續變數?C++變數
- C++建構函式和解構函式呼叫虛擬函式時使用靜態聯編C++函式
- Java靜態變數在靜態方法內部無法改變值Java變數
- 區域性變數和全域性變數(靜態和非靜態)區別變數
- Java自學入門之靜態變數Java變數
- 關於單例及靜態變數測試單例變數
- linux 動態庫 靜態庫 函式覆蓋Linux函式
- 構建靜態頁面 之 [ 列表 ]
- 構建靜態頁面 之 [ 表格 ]
- C++學習筆記(三):類與物件--靜態成員變數與常成員函式C++筆記物件變數函式
- 類內的靜態成員函式函式
- url_for函式與靜態檔案函式
- 構建靜態頁面 之 [ 表單 ]
- C#未來新特性:靜態委託和函式指標C#函式指標
- Spring如何為靜態變數注入值Spring變數
- 靜態域與靜態方法
- Solidity中函式返回值,靜態動態陣列Solid函式陣列
- Java中靜態程式碼塊、構造程式碼塊、建構函式、普通程式碼塊Java函式
- QT之靜態函式傳送訊號QT函式
- C#資料結構-靜態連結串列C#資料結構
- Java中建構函式、靜態程式碼塊、程式碼塊的執行順序Java函式
- 對於systemverilog靜態變數和動態變數 ,描述不正確的是()。變數
- C語言--靜態區域性變數C語言變數
- Java逆向基礎之靜態變數存取Java變數
- 靜態
- 偽靜態、靜態和動態的區別
- 機器學習的靜態特徵和動態特徵機器學習特徵
- JavaScript 靜態屬性與靜態方法JavaScript
- net 靜態方法與非靜態方法
- c# .Net Core靜態檔案伺服器學習總結C#伺服器
- ConcurrentHashMap(一):常量,成員變數,靜態程式碼塊,內部類,spread函式,tabAt函式等詳解HashMap變數函式BAT
- 逆向微信-分析學習微信是如何快速構建靜態TableView介面的View
- BootStrap的動態模態框及靜態模態框boot
- c#物件導向- 靜態成員和非靜態成員的區別C#物件
- Linux 靜態庫生成及呼叫Linux
- doubleselect 靜態
- 靜態路由路由