1. 程式人生 > >C#: static關鍵字的作用

C#: static關鍵字的作用

轉:C#: static關鍵字的作用

tatic意思是靜態,可以修飾類、欄位、屬性、方法

標記為static的就不用建立例項物件呼叫了,可以通過類名直接點出來

static三種用法

1.用於變數前,表示每次重新使用該變數所在方法、類或自定義類時,變數的值為程式這次執行最後一次為變數賦值時的值,這個方法稱為靜態函式

private void s()

{

static int a=1;

a++;

}

方法第一次呼叫結束後a在記憶體內值為2;

方法第一次呼叫結束後a在記憶體內值為3;

 

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

情況一:非靜態方法:

class t

{

t(....(引數,下面同))

{

~~~~(方法內容,下面同)

}

void s(....)

{

~~~~

}

}

當你在其他方法裡呼叫這個類中的方法s,則需先宣告這個類的變數如:t sd = new t(....);

再在t裡呼叫方法:sd.s(....);

情況2:靜態方法:

class t

{

t(....(引數,下面同))

{

~~~~(方法內容,下面同)

}

static void s(....)

{

~~~~

}

}

當你在其他方法裡呼叫這個類中的方法s,則不用先宣告這個類的變數如直接呼叫方法:t.s(....);

呵呵,這個就要看你的具體需求了,我們知道凡是在變數、方法、類前聲明瞭static關鍵字後,他們就是全域性的了,
好處就是,你不需要每次在使用些方法的時候頻繁使用坑爹的new關鍵字了(說實話,這真的很麻煩)。
還有就是考慮系統資源的安全性,打個比方吧,員工類,一個公司咱需要很多員工吧,咱就可以new出無數個員工,但是部門領導最好是static的,那樣就防止new出很多領導啦!

 

3.用於class前,說明此型別無法新建例項,簡單點說這個型別的方法全是靜態方法,這個類裡的非靜態方法是不能使用的,這個型別稱為靜態類.

比如C#控制檯操作的Cancle類裡面的成員就被標記為靜態的,可以直接用Concle.直接點出來使用

如果沒有標記為靜態就要通過建立例項物件來呼叫,比如說動態字串StringBuilder就要new一個例項來呼叫

StringBuilder sb =new StringBuilder();

sb.xxx(); //xxx是方法名

 

 

static class t

{

~~~~

}

~~~~

class d

{

~~~~

void f(....)

{

~~~~

t v = new t();//此時程式會出現錯誤

}

}

Tips:

整個型別在程式執行期間只加載一次。 這樣是對於那些經常使用的型別來說的, 那就不用每次使用前都先載入。效率高些。

但是對那些不常用的型別來說,如果是靜態型別,那就要一直佔用相當的記憶體;一直到程式停止。或者應用程式域被卸 載。所以應該只對那些常用的型別定義成靜態型別。