C 關鍵字之static詳解

2021-08-01 03:08:10 字數 1239 閱讀 9745

static靜態的,不變的,在某個類中只有乙個,不會因例項化物件的不同而不同。static可以修飾類、字段、屬性、方法等。如乙個方法前加上static修飾後要對其進行呼叫可以直接通過類名點出來,不用再對類進行例項化。

一、靜態類

1.只能包含靜態成員(靜態方法或靜態變數),非靜態成員是不能使用的,而非靜態類可以包含靜態的方法、字段、屬性或事件,且無論對這個非靜態類建立多少個例項,它的靜態成員都只有乙個。

2.不能對其實例化。

3.不能被繼承,因為靜態類本質是乙個抽象的密封類。

4.不能包含例項建構函式。

二、靜態變數

1.static只能修飾成員變數,不能修飾區域性變數。

2.表示每次重新使用該變數所在方法、類或自定義類時,變數的值為程式這次執行最後一次為變數賦值時的值。

3.靜態變數一直記錄變數的值,一直到下次賦值時。

4.不同執行緒下訪問的靜態屬性總是同一屬性,如果某一線程更改了屬性值,將造成其他執行緒訪問屬性值的錯誤。因此方法中訪問同一靜態屬性就需要使用lock關鍵字,或建立互斥物件來保持靜態屬性在同一時間只能被某一物件的屬性或方法訪問。

5.靜態成員只被建立一次,所以靜態成員只有乙份,而例項成員有多少個物件,就有多少個成員。

三、靜態方法

1.在方法(函式)前用static修飾,表示此方法為所在類或所在自定義類所有,而不是這個類的例項所有。

2.在靜態方法中只能直接呼叫同類中其他的靜態成員(包括變數和方法), 而不能直接訪問類中的非靜態成員。

3.每乙個執行緒在同一時間訪問的靜態方法都是不同的,因此靜態方法在多執行緒呼叫中不會產生衝突。

4.在靜態方法中不能直接呼叫例項成員,因為靜態方法被呼叫時,物件還有可能不存在。

5.this/base關鍵字在靜態方法不能使用,因為有可能物件還不存在。

6.靜態方法只能被過載,不能被重寫,因為靜態方法不屬於類的例項成員。

四、靜態建構函式

1.靜態類可以有靜態建構函式,靜態建構函式不可繼承。

2.可以用於靜態類,也可用於非靜態類。

3.無訪問修飾符、無引數,只有乙個static標誌。

4.不可被直接呼叫,當建立類例項或引用任何靜態成員之前,靜態建構函式被自動執行,並且只執行一次。

什麼時候適合用static修飾?

1.當變數需要被共享時可以將變數定義為靜態變數。

2.當方法需要被反覆呼叫時可以將方法定義為靜態方法。

3.當乙個類中包含的成員都是靜態時可以將類定義為靜態類。

關鍵字 static 詳解

c 的static有兩種用法 面向過程程式設計中的static和物件導向程式設計中的static。前者應用於普通變數和函式,不涉及類 後者主要說明static在類中的作用。一 面向過程設計中的static 1 靜態全域性變數 在全域性變數前,加上關鍵字static,該變數就被定義成為乙個靜態全域性變...

static關鍵字詳解

static關鍵字詳解 static修飾方法 叫做 靜態方法 static修飾的屬性 叫做靜態屬性 static屬於類,是公家的,它在靜態方法區中只有乙份,每個物件共享類中的static,執行緒會用到.我們可以通過類名呼叫static修飾的屬性或方法,也可以通過物件名呼叫,好處是不需要new出物件,...

c 之關鍵字static

static這個關鍵字的作用有兩個,乙個是修飾變數,乙個是修飾函式。變數又分為區域性變數和全域性變數,但他們都存在記憶體的靜態區。也就是說,當static修飾的是區域性變數,那就是改變了區域性變數的生存時間 如果沒有static區域性變數修飾,那麼當區域性變數所處的函式結束時,該變數也就被釋放了 但...