C#中有一個修飾符,它叫static,國人把它叫靜态化的,它可以去修飾類,方法,屬性,事件等元素。
在100%的教科書中把static叫做靜态的,對于原本就很抽象的程式設計語言來說,無疑使它更加抽象化了,啥是靜态,靜止不動?有點意思。
先看一個static的應用場合代碼片斷:
一 靜态類:它在程式初始化時自動被執行
二 靜态方法和靜态屬性:它在類被第一次使用或第一次被執行個體化時,被執行
三 靜态事件,它與靜态屬性和方法一樣的執行機制
事實上,以上三點是書本上經常介紹的,但我不認為它是一種學習static的最好方式,看一下我對static的了解:
它是類本身的東西,與執行個體無關,即類的屬性,類的方法,類的事件等等,它與執行個體無關,也就是執行個體A與執行個體B,對于public static修飾符下的屬性,方法,事件是平等的,同時也是共享的。
如果在一個類型B中對StaticA類中的靜态屬性Num指派,它會對所有類中使用Num屬性的位置進行修改(事實上,在内在中,它隻是一個位址),你的代碼可能是這樣:
在其它類中,有對Num屬性的使用:
而當我們在程式的任何一處修改Num的值時,以上A和B中的執行個體屬性ANum和BNum也就會發生變化了,呵呵。
看一下,由static實作的單件模式吧(類隻能有一個執行個體)
總結一下static的技術要點:
1 static與具體執行個體無法,屬性類本身的東西,而不加static是與目前執行個體(new ())有關的個性化對象
2 static叫它靜态對象不如叫它全局對象或類自身對象
3 static有時可以提高系統性能,即,在為對象開辟一塊記憶體空間