靜態類和靜態類成員(C )

2022-03-11 22:19:26 字數 2594 閱讀 7544

靜態類與非靜態類基本相同,但存在乙個區別:靜態類不能例項化。 也就是說,不能使用 new 關鍵字建立靜態類型別的變數。 因為沒有例項變數,所以要使用類名本身訪問靜態類的成員。 例如,如果名為 utilityclass 的靜態類有乙個名為 methoda 的公共方法,則按下面的示例所示呼叫該方法:

c#:utilityclass.methoda();

靜態類的主要特性:

因此,建立靜態類與建立僅包含靜態成員和私有建構函式的類基本相同。私有建構函式阻止類被例項化。使用靜態類的優點在於,編譯器能夠執行檢查以確保不致偶然地新增例項成員。 編譯器將保證不會建立此類的例項。

靜態類是密封的,因此不可被繼承。 它們不能從除 object 外的任何類中繼承。 靜態類不能包含例項建構函式,但可以包含靜態建構函式。 如果非靜態類包含需要進行重要的初始化的靜態成員,也應定義靜態建構函式。靜態建構函式

下面是乙個靜態類的示例,它包含兩個在攝氏溫度和華氏溫度之間執行來回轉換的方法:

public

static

class temperatureconverter

public

static

double

fahrenheittocelsius(string temperaturefahrenheit)

}class testtemperatureconverter

", f);

break;

case

"2":

console.write("please enter the fahrenheit temperature: ");

c = temperatureconverter.fahrenheittocelsius(console.readline());

console.writeline("temperature in celsius: ", c);

break;

default:

console.writeline("please select a convertor.");

break;

}// keep the console window open in debug mode.

console.writeline("press any key to exit.");

console.readkey();}}

/* example output:

please select the convertor direction

1. from celsius to fahrenheit.

2. from fahrenheit to celsius.

:2please enter the fahrenheit temperature: 20

temperature in celsius: -6.67

press any key to exit.

*/

非靜態類可以包含靜態的方法、字段、屬性或事件。 即使沒有建立類的例項,也可以呼叫該類中的靜態成員。始終通過類名而不是例項名稱訪問靜態成員。 無論對乙個類建立多少個例項,它的靜態成員都只有乙個副本。

靜態方法和屬性不能訪問其包含型別中的非靜態欄位和事件,並且不能訪問任何物件的例項變數(除非在方法引數中顯式傳遞)。

更常見的做法是宣告具有一些靜態成員的非靜態類,而不是將整個類宣告為靜態類。靜態欄位有兩個常見的用法:一是記錄已例項化物件的個數,二是儲存必須在所有例項之間共享的值。

靜態方法可以被過載但不能被重寫,因為它們屬於類,不屬於類的任何例項。

雖然字段不能宣告為 static const,但 const 欄位的行為在本質上是靜態的。 這樣的字段屬於型別,不屬於型別的例項。因此,可以同對待靜態字段一樣使用 classname.membername 表示法來訪問 const 字段。 不需要物件例項。

c# 不支援靜態區域性變數(在方法範圍內宣告的變數)。

通過在成員的返回型別之前使用 static 關鍵字可以宣告靜態類成員,如下面的示例所示:

public

class automobile

}public

static

void

drive()

public

static

event eventtype runoutofgas;

// other non-static fields and properties...

}

靜態成員在第一次被訪問之前並且在呼叫靜態建構函式(如有存在)之前進行初始化。 若要訪問靜態類成員,應使用類名而不是變數名來指定該成員的位置,如下面的示例所示:

automobile.drive();

int i = automobile.numberofwheels

;

如果類包含靜態字段,請提供在載入類時初始化這些欄位的靜態建構函式。

靜態類和靜態類成員(c# 程式設計指南):

C 靜態類成員和靜態類成員函式

一 靜態類成員 include class stringbad 靜態類成員有乙個特點 無論建立多少物件,程式都只能建立乙個靜態變數副本。也就是說所有物件共享同乙個靜態成員,就像你家 可供全家家庭成員共享一樣。假設建立了10個stringbad物件,將有10個str成員和len成員,但是只共享乙個nu...

C 基礎 靜態成員和靜態類

靜態成員 1.靜態成員是被static關鍵字修飾的.是屬於類的.通過類名.靜態成員來訪問.2.例項成員 沒有被static關鍵字修飾的 是屬於物件的.通過物件名.例項成員來訪問.3.例項成員屬於物件.4.在這個類第一次被載入的時候,這個類下面的所有的靜態成員會被載入 5.靜態成員只被建立1次.所以靜...

靜態類和靜態類成員(C 程式設計指南

靜態類和靜態類成員 c 程式設計指南 2009 03 25 11 51 48 標籤 技術 分類 技術文章 靜態 類與非靜態類基本相同,但存在乙個區別 靜態類不能例項化。也就是說,不能使用 new 關鍵字建立靜態類型別的變數。因為沒有例項變數,所以要使用類名本身訪問靜態類的成員。例如,如果名為 uti...