用static宣告的變數或函式,都是屬於類的,而不屬於類物件,所以最好不要在類的建構函式中為static變數初始化(不需要初始化的就不用顧忌了,因為c#缺省會給static變數初化得,比如staitc整型變數,會初始化為0)。如果在類的建構函式中初始化static變數,那只有在你new過該類的物件後,static變數的初始化才起作用。
一、 例如:以下**,定義了乙個static_test的類,該類中有個static型別的list變數,並在建構函式中為其初始化
class static_test
}/// /// 列印m_lst
///
public static void printlist()
for (int i = 0; i < m_lst.count; ++i)
console.writeline();
}}
1. 此時,在沒有定義過static_test型別的物件時,直接呼叫static_test.printlist(),情況如下:
static void main(string args)
輸出:
list is null
2. 若定義過static_test型別的物件,再呼叫static_test.printlist(),m_lst就有值了。
static void main(string args)
輸出:0 1 2 3 4 5 6 7 8 9
二、我個人觀點,將需要初始化的靜態變數,在類中宣告時,就給初始化了,以避免不必要的錯誤。如下,加了個initlist()靜態成員函式,static成員變數在宣告時通過該函式初始化
class static_test
private static listinitlist()
return lst;
}/// /// 列印m_lst
///
public static void printlist()
for (int i = 0; i < m_lst.count; ++i)
console.writeline();
}}
此時,在沒有定義過static_test型別的物件時,直接呼叫static_test.printlist(),情況如下:
static void main(string args)
輸出:
0 1 2 3 4 5 6 7 8 9
C static變數初始化問題
首先static變數只有一次初始化,不管在類中還是在函式中.有這樣乙個函式 view plain copy to clipboard print?void foo 這裡的static int a 3只執行了一次。在main中呼叫foo 兩次,結果為34.將上面的函式改為 view plain cop...
C static資料成員的初始化
c static static 資料成員的初始化可以分為兩種情況 第一種比較簡單,是staticconst int 型別的,它的初始化可以之間的類定義體內直接進行,比如 staticconst int period 30 第二種是其他型別的,初始化不能放在類定義體內部,要在外部定義,而且不能通過建構...
變數初始化
int a 是變數定義,也就是說編譯器將為a分配儲存,這在編譯時被處理。int a 0 是定義 初始化,定義的分配儲存的action在編譯時完成,初始化的action則在執行時完成 將執行類似dword ptr ebp 4 0的指令,而單獨的int a 不會有對應的執行指令 定義是分配空間,而初始化...