關於靜態方法和例項方法的一些誤區。

2021-09-22 07:00:33 字數 563 閱讀 2233

一、 靜態方法常駐記憶體,例項方法不是,所以靜態方法效率高但佔記憶體。

事實上,方法都是一樣的,在載入時機和占用記憶體上,靜態方法和例項方法是一樣的,在型別第一次被使用時載入。呼叫的速度基本上沒有差別。

二、 靜態方法在堆上分配記憶體,例項方法在堆疊上。

事實上所有的方法都不可能在堆或者堆疊上分配記憶體,方法作為**是被載入到特殊的**記憶體區域,這個記憶體區域是不可寫的。

三、 例項方法需要先建立例項才可以呼叫,比較麻煩,靜態方法不用,比較簡單。

事實上如果乙個方法與他所在型別的例項無關,那麼它就應該是靜態的,決不會有人把它寫成例項方法。所以所有的例項方法都與例項有關,既然與例項有關,那麼建立例項就是必然的步驟,沒有麻煩簡單一說。實際上上你可以把所有的例項方法都寫成靜態的,將例項作為引數傳入即可。

有些方法看似與所在的例項無關,如icomparer.compare方法,但實際上每乙個實現這個介面的類都只會負責自己型別例項的比較,這是c#1.x規範中沒有泛型所帶來的歷史遺留問題。

大部分靜態方法是與類的例項有關的,如各種parse方法,他做成靜態的原因是他沒有例項作為引數。其他的大多是出於語義或者其他目的的考慮。

關於靜態方法和例項方法的一些誤區。

一 靜態方法常駐記憶體,例項方法不是,所以靜態方法效率高但佔記憶體。事實上,方法都是一樣的,在載入時機和占用記憶體上,靜態方法和例項方法是一樣的,在型別第一次被使用時載入。呼叫的速度基本上沒有差別。二 靜態方法在堆上分配記憶體,例項方法在堆疊上。事實上所有的方法都不可能在堆或者堆疊上分配記憶體,方法...

關於靜態方法和例項方法的一些誤區。

關於靜態方法和例項方法的一些誤區。一 靜態方法常駐記憶體,例項方法不是,所以靜態方法效率高但佔記憶體。事實上,方法都是一樣的,在載入時機和占用記憶體上,靜態方法和例項方法是一樣的,在型別第一次被使用時載入。呼叫的速度基本上沒有差別。二 靜態方法在堆上分配記憶體,例項方法在堆疊上。事實上所有的方法都不...

jQuery的一些靜態方法

該方法被繫結在jquery物件上,只能通過 noconflict 呼叫 noconflict function deep 如果傳入引數deep為ture,說明使用者解除window物件的jquery屬性對jquery物件的引用,執行 同樣的操作 if deep window.jquery jquer...