學習C#靜態(tài)函數(shù)及變量的一個精典例子與代碼
更新時間:2007年03月25日 00:00:00 作者:
(1)用于對靜態(tài)字段、只讀字段等的初始化。
(2)添加static關鍵字,不能添加訪問修飾符,因為靜態(tài)構造函數(shù)都是私有的。
(3)類的靜態(tài)構造函數(shù)在給定應用程序域中至多執(zhí)行一次:只有創(chuàng)建類的實例或者引用類的任何靜態(tài)成員才激發(fā)靜態(tài)構造函數(shù)
?。?)靜態(tài)構造函數(shù)是不可繼承的,而且不能被直接調(diào)用。
?。?)如果類中包含用來開始執(zhí)行的 Main 方法,則該類的靜態(tài)構造函數(shù)將在調(diào)用 Main 方法之前執(zhí)行。任何帶有初始值設定項的靜態(tài)字段,則在執(zhí)行該類的靜態(tài)構造函數(shù)時,先要按照文本順序執(zhí)行那些初始值設定項。
?。?)如果沒有編寫靜態(tài)構造函數(shù),而這時類中包含帶有初始值設定的靜態(tài)字段,那么編譯器會自動生成默認的靜態(tài)構造函數(shù)。
以下用例子代碼進一步說明:
/**************************************************
* 靜 態(tài) 構 造 函 數(shù) 練 習
* (1)①②③……為執(zhí)行順序
* (2)輸出結果: static A()
* static B()
* X = 1, Y = 2
***************************************************/
using System;
class A
{
public static int X;
static A() //④ 執(zhí)行完后返回到③
{
X = B.Y + 1;
Console.WriteLine("static A()");
}
}
class B
{
public static int Y = A.X + 1; //③ 調(diào)用了A的靜態(tài)成員,
// 轉到A的靜態(tài)構造函數(shù)---->
static B() //② 如果帶有初始值設定項的靜態(tài)字段,
// 執(zhí)行該類的靜態(tài)構造函數(shù)時,
// 先要按照文本順序執(zhí)行那些初始值設定項。
// 轉到初始值設定項---->
{
Console.WriteLine("static B()");
}
static void Main() //① 程序入口,
// 如果類中包含用來開始執(zhí)行的 Main 方法,
// 該類的靜態(tài)構造函數(shù)將在調(diào)用 Main 方法之前執(zhí)行。
// 轉到B的靜態(tài)構造函數(shù)---->
{
Console.WriteLine("X = {0}, Y = {1}", A.X, B.Y);//⑤ 輸出結果
Console.ReadLine();
}
}
(2)添加static關鍵字,不能添加訪問修飾符,因為靜態(tài)構造函數(shù)都是私有的。
(3)類的靜態(tài)構造函數(shù)在給定應用程序域中至多執(zhí)行一次:只有創(chuàng)建類的實例或者引用類的任何靜態(tài)成員才激發(fā)靜態(tài)構造函數(shù)
?。?)靜態(tài)構造函數(shù)是不可繼承的,而且不能被直接調(diào)用。
?。?)如果類中包含用來開始執(zhí)行的 Main 方法,則該類的靜態(tài)構造函數(shù)將在調(diào)用 Main 方法之前執(zhí)行。任何帶有初始值設定項的靜態(tài)字段,則在執(zhí)行該類的靜態(tài)構造函數(shù)時,先要按照文本順序執(zhí)行那些初始值設定項。
?。?)如果沒有編寫靜態(tài)構造函數(shù),而這時類中包含帶有初始值設定的靜態(tài)字段,那么編譯器會自動生成默認的靜態(tài)構造函數(shù)。
以下用例子代碼進一步說明:
復制代碼 代碼如下:
/**************************************************
* 靜 態(tài) 構 造 函 數(shù) 練 習
* (1)①②③……為執(zhí)行順序
* (2)輸出結果: static A()
* static B()
* X = 1, Y = 2
***************************************************/
using System;
class A
{
public static int X;
static A() //④ 執(zhí)行完后返回到③
{
X = B.Y + 1;
Console.WriteLine("static A()");
}
}
class B
{
public static int Y = A.X + 1; //③ 調(diào)用了A的靜態(tài)成員,
// 轉到A的靜態(tài)構造函數(shù)---->
static B() //② 如果帶有初始值設定項的靜態(tài)字段,
// 執(zhí)行該類的靜態(tài)構造函數(shù)時,
// 先要按照文本順序執(zhí)行那些初始值設定項。
// 轉到初始值設定項---->
{
Console.WriteLine("static B()");
}
static void Main() //① 程序入口,
// 如果類中包含用來開始執(zhí)行的 Main 方法,
// 該類的靜態(tài)構造函數(shù)將在調(diào)用 Main 方法之前執(zhí)行。
// 轉到B的靜態(tài)構造函數(shù)---->
{
Console.WriteLine("X = {0}, Y = {1}", A.X, B.Y);//⑤ 輸出結果
Console.ReadLine();
}
}
相關文章
C#實現(xiàn)套接字發(fā)送接收數(shù)據(jù)
這篇文章主要為大家詳細介紹了C#實現(xiàn)套接字發(fā)送接收數(shù)據(jù),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11解析C#中的私有構造函數(shù)和靜態(tài)構造函數(shù)
這篇文章主要介紹了C#中的私有構造函數(shù)和靜態(tài)構造函數(shù),是C#入門學習中的基礎知識,需要的朋友可以參考下2016-01-01gridview的buttonfield獲取該行的索引值(實例講解)
本篇文章主要介紹了gridview的buttonfield獲取該行的索引值(實例講解)需要的朋友可以過來參考下,希望對大家有所幫助2014-01-01C#創(chuàng)建、部署、調(diào)用WebService圖文實例詳解
本文主要用詳細的圖文給大家介紹C#創(chuàng)建、部署、調(diào)用WebService的全部過程以及中間需要避免的問題。2017-11-11