Static 淺談
static 修飾詞常用在 class、variable 或 method 等, 下列為 static 特性(C# 與 Java 相同):
1. 而靜態成員屬於類別本身,並不隸屬任何一個物件
Ex: 存取 static 全域變數時, 只需要"類別名稱.全域變數"即可存取
{ public static string str = "123"; public void testMethod { //此處可直接存取 str 變數, //因為 str 已屬於類別本身, //而目前所在位置也在此列別中, //因此可忽略類別名稱直接存取 } } class Test2 { public void testMethod { /*類別名稱.全域變數 即可存取*/ Test1.str // 123 } }
但如果是 static method 存取非 static 全域變數就無法直接使用"類別名稱.全域變數"來存取
{ public tring str = "123"; public static void testMethod { /* testMethod 屬於類別本身, 因此靜態方法無法存取非靜態的全域變數 */ } } class Test2 { public void testMethod { /*Test1 的 str 變數不是靜態的, 因此只能透過 new 存取*/ new Test1().str //123 } }
簡單來說, 以全域變數為例如果不考慮存取修飾詞, 靜態的全域變數(類別層級)可以供所有物件存取, 非靜態的全域變數只能供非類別層級的物件存取
2. 如果類別套用了 static 關鍵字,則此類別的所有成員必定為靜態
3. static 可用在 classes, fields, methods, properties, operators, events, and constructors