日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# 之静态构造器与静态字段初始化器

發布時間:2025/5/22 C# 36 如意码农
生活随笔 收集整理的這篇文章主要介紹了 C# 之静态构造器与静态字段初始化器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
public class Test
{
/// <summary>
/// 靜態字段初始化器會在調用靜態構造器前運行。
/// 如果類型沒有靜態構造器,字段會在類型被使用前或運行時中更早的時間進行初始化.
/// 靜態字段初始化器按照字段聲明的先后順序運行。
/// </summary>
public static int X = Y;//靜態字段初始化器
public static int Y = 3;//靜態字段初始化器
public static int Z = 6;//靜態字段初始化器
public static int ZX = Z;//靜態字段初始化器
/// <summary>
/// 靜態構造器,一個類型只能定義一個靜態構造器,名稱必須和類名相同,且沒有參數。
/// 運行時將在類型使用之前調用靜態構造器,以下兩種行為可以觸發靜態構造器執行:
/// ·實例化類型
/// ·訪問類型的靜態成員
/// </summary>
static Test()
{
Console.WriteLine("Test Type Initialized");
}
public Test()
{
Console.WriteLine("This is Initalize function");
}
} class ProgramA
{
static void Main()
{
Test t = new Test();
Console.WriteLine("X is "+Test.X);
Console.ReadLine();
}
}

OUTPUT:

Test Type Initialized
This is Initalize function
X is 0

輸出結果正證實了:靜態構造器只會執行一次。

class ProgramA
{
static void Main()
{
Console.WriteLine("Z is " + Test.Z);
Console.WriteLine("ZX is "+Test.ZX);
Console.ReadLine();
}
}

output:

Test Type Initialized
Z is 6
ZX is 6

輸出結果正證實了:靜態字段初始化器是按照順序進行的。

class Foo
{
/// <summary>
/// 靜態字段初始化器按照聲明順序運行
/// </summary>
public static Foo Instance = new Foo();
public static int X = 3;
Foo()
{
Console.WriteLine(X);
}
} class ProgramA
{
static void Main()
{
//靜態字段初始化器在類型使用前就運行,所以首先是運行Instance,
//而Instance正好調用了實例構造函數,而實例構造函數打印X,而此時,
//X還沒有賦值,所以打印出0,而后,才初始化X為3,再在Main()函數中打印出X,即3
Console.WriteLine(Foo.X);
Console.ReadLine();
}
}

output:

0
3

總結

以上是生活随笔為你收集整理的C# 之静态构造器与静态字段初始化器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。