天天看點

将不确定變為确定~static被翻譯成靜态,你是否贊同

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有時可以提高系統性能,即,在為對象開辟一塊記憶體空間