【转】C#Static类和Static构造函数
生活随笔
收集整理的這篇文章主要介紹了
【转】C#Static类和Static构造函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Static類是不能實例化的, C#2.0以前為了不讓一個類在外部實例化,通常都是創建一個private的構造函數,現在可以通過Static類來達到這樣的目的. Static類通常用于那些只包括static 方法或屬性的工具類, 這樣的類沒有必要進行實例化, 所以干脆用static修飾,表示不能實例化 Static Constructor有如下特征:
/**************************************************
* (1)①②③……為執行順序
* (2)輸出結果:
* static A()
* static B()
* X = 1, Y = 2
***************************************************/
using System;
class A
{
??public static int X;
??static A() //④ 執行完后返回到③
??{
????X = B.Y + 1;
????Console.WriteLine("static A()");
??}
}
class B
{
??public static int Y = A.X + 1; //③ 調用了A的靜態成員,
??// 轉到A的靜態構造函數---->
??static B() //② 如果帶有初始值設定項的靜態字段,
??// 執行該類的靜態構造函數時,
??// 先要按照文本順序執行那些初始值設定項。
??// 轉到初始值設定項---->
??{
????Console.WriteLine("static B()");
??}
??static void Main() //① 程序入口,
??// 如果類中包含用來開始執行的 Main 方法,
??// 該類的靜態構造函數將在調用 Main 方法之前執行。
??// 轉到B的靜態構造函數---->
??{
????Console.WriteLine("X = {0}, Y = {1}", A.X, B.Y);//⑤ 輸出結果
????Console.ReadLine();
??}
}
1. 用于對靜態字段、只讀字段等的初始化.
2. 添加static關鍵字,不能添加訪問修飾符,因為靜態構造函數都是私有的。
3. 類的靜態構造函數在給定應用程序域中至多執行一次,只有創建類的實例或者引用類的任何靜態成員才激發靜態構造函數
4. 靜態構造函數是不可繼承的,而且不能被直接調用。
5. 如果類中包含用來開始執行的 Main 方法,則該類的靜態構造函數將在調用 Main 方法之前執行。 任何帶有初始值設定項的靜態字段,則在執行該類的靜態構造函數時,先要按照文本順序執行那些初始值設定項。
6. 如果沒有編寫靜態構造函數,而這時類中包含帶有初始值設定的靜態字段,那么編譯器會自動生成默認的靜態構造函數。
/**************************************************
* (1)①②③……為執行順序
* (2)輸出結果:
* static A()
* static B()
* X = 1, Y = 2
***************************************************/
using System;
class A
{
??public static int X;
??static A() //④ 執行完后返回到③
??{
????X = B.Y + 1;
????Console.WriteLine("static A()");
??}
}
class B
{
??public static int Y = A.X + 1; //③ 調用了A的靜態成員,
??// 轉到A的靜態構造函數---->
??static B() //② 如果帶有初始值設定項的靜態字段,
??// 執行該類的靜態構造函數時,
??// 先要按照文本順序執行那些初始值設定項。
??// 轉到初始值設定項---->
??{
????Console.WriteLine("static B()");
??}
??static void Main() //① 程序入口,
??// 如果類中包含用來開始執行的 Main 方法,
??// 該類的靜態構造函數將在調用 Main 方法之前執行。
??// 轉到B的靜態構造函數---->
??{
????Console.WriteLine("X = {0}, Y = {1}", A.X, B.Y);//⑤ 輸出結果
????Console.ReadLine();
??}
}
總結
以上是生活随笔為你收集整理的【转】C#Static类和Static构造函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: U3D assetbundle打包
- 下一篇: string与stringBuilder