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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 函式的靜態變數 static函式變數
- c#之saf靜態屬性與建構函式C#函式
- 靜態變數和非靜態變數變數
- 靜態變數與靜態方法變數
- java靜態變數和靜態函式是否可以被繼承,重寫!Java變數函式繼承
- 避免因在類中使用靜態函式而大量使用靜態變數 (轉)函式變數
- 靜態變數變數
- C++ static variable(靜態變數) 學習C++變數
- 【C++】靜態持續變數?如何建立靜態持續變數?C++變數
- C++靜態函式C++函式
- 靜態持續變數變數
- 靜態變數和Session變數Session
- 靜態資料成員和靜態成員函式函式
- PHP類的靜態(static)方法和靜態(static)變數PHP變數
- 私有建構函式的應用與靜態工廠模式函式模式
- C++建構函式和解構函式呼叫虛擬函式時使用靜態聯編C++函式
- Java靜態變數在靜態方法內部無法改變值Java變數
- ASP.NET偽靜態及靜態ASP.NET
- 區域性變數和全域性變數(靜態和非靜態)區別變數
- static靜態變數的理解變數
- js中的靜態變數JS變數
- 關於單例及靜態變數測試單例變數
- C# 靜態類C#
- C語言區域性變數、全域性變數、靜態區域性變數、靜態全域性變數C語言變數
- Jni函式的靜態繫結函式
- Java靜態變數塊使用案例Java變數
- C/C++ 靜態變數解析C++變數
- PHP的靜態變數介紹PHP變數
- VBA靜態變數與常量(轉)變數
- C++學習筆記(三):類與物件--靜態成員變數與常成員函式C++筆記物件變數函式
- 靜態全域性變數和全域性變數變數
- 靜態變數和例項變數區別?變數
- Django構建靜態網頁站點Django網頁
- 動態引數,靜態引數
- linux 動態庫 靜態庫 函式覆蓋Linux函式
- 類內的靜態成員函式函式
- Java自學入門之靜態變數Java變數
- 遞迴程式中的靜態變數遞迴變數