C中靜態方法和非靜態方法的區別

2021-07-08 21:14:06 字數 3476 閱讀 1497

1樓:文件類共創空間

"c#靜態方法與非靜態方法的區別不僅僅是概念上的,那麼他們有什麼具體的區別呢?讓我們通過本文向你做一下解析。

c#的類中可以包含兩種方法:c#靜態方法與非靜態方法。那麼他們的定義有什麼不同呢?他們在使用上會有什麼不同呢?

讓我們來看看最直觀的差別:使用了static 修飾符的方法為靜態方法,反之則是非靜態方法。

下面我們分四個方面來看看c#靜態方法與非靜態方法的差異:

c#靜態方法與非靜態方法比較一、

c#靜態成員:

①靜態成員屬於類所有,非靜態成員屬於類的例項所有。

②每建立一個類的例項,都會在記憶體中為非靜態成員新分配一塊儲存;

靜態成員屬於類所有,為各個類的例項所公用,無論類建立了多少例項,類的靜態成員在記憶體中只佔同一塊區域。

c#靜態方法與非靜態方法比較二、

c#靜態方法

1、c#靜態方法屬於類所有,類例項化前即可使用。

2、非靜態方法可以訪問類中的任何成員,靜態方法只能訪問類中的靜態成員。

3、因為靜態方法在類例項化前就可以使用,而類中的非靜態變數必須在例項化之後才能分配記憶體,

這樣,c#靜態方法呼叫時無法判斷非靜態變數使用的記憶體地址。所以無法使用。而靜態變數的地址對類來說是固定的,故可以使用。

c#靜態方法與非靜態方法比較三、

c#靜態方法是一種特殊的成員方法 它不屬於類的某一個具體的例項,而是屬於類本身。所以對靜態方法不需要首先建立一個類的例項,而是採用類名.靜態方法的格式 。

1.static方法是類中的一個成員方法,屬於整個類,即不用建立任何物件也可以直接呼叫!

static內部只能出現static變數和其他static方法!而且static方法中還不能使用this....等關鍵字..因為它是屬於整個類!

2.靜態方法效率上要比例項化高,靜態方法的缺點是不自動進行銷燬,而例項化的則可以做銷燬。

3.靜態方法和靜態變數建立後始終使用同一塊記憶體,而使用例項的方式會建立多個記憶體.

4.c#中的方法有兩種:例項方法,靜態方法.

c#靜態方法與非靜態方法比較四、

c#靜態方法中獲取類的名稱

靜態方法中用:

string classname = system.reflection.methodbase.

getcurrentmethod().reflectedtype.fullname;

非靜態方法中還可以用:

string classname = this.gettype().fullname;

c#靜態方法與非靜態方法的區別解析旨在詮釋c#靜態方法的含義,希望對你瞭解和學習c#靜態方法與非靜態方法有所幫助。"

2樓:匿名使用者

1.可以直接用,不用new也就是例項化,通過類名加個點就可以用了2.靜態方法裡只可以用靜態的東西

3.靜態方法的生命週期長,也就是說,定義一個靜態變數,你往裡面存東西可以一直存在

4.定義的靜態方法在記憶體中有固定的位置,所以一個程式最好不要有太多的靜態方法

非靜態方法:

參考靜態方法(取反)

3樓:匿名使用者

嗯,靜態方法可以通過類名打點的方式使用方法如:class.function();//class是類名,function是class類的靜態方法,

非靜態方法需要建構函式例項化,如:

class cl=new class();//例項化類cl.function();//呼叫函式試試吧

4樓:萊宸展翰採

看書得仔細哦。加油。

5樓:甲珂莘之桃

所以靜態方法

只需要用類名點方法

而非靜態方法

需要用物件點方法名

6樓:莊豫壤駟明凝

靜態方法不需要例項化就可以訪問的方法

動態方法又稱例項方法,它是必須通過例項化引用才能訪問的方法

7樓:普翼煙清昶

c#靜態

與非靜態

區別僅僅

概念具體

區別呢讓我

通本文向做解析

c#類包含兩種

:c#靜態

與非靜態

定義同呢

使用同呢

讓我看看

直觀差別:使用

static

修飾符靜態反則

非靜態面我四面

看看c#靜態

與非靜態

差異:c#靜態

與非靜態

比較、c#靜態

員:①靜態

員屬於類所

非靜態員屬於類

例項所②每建立類例項

都記憶體非靜態員新

配塊儲存;

靜態員屬於類所各類

例項所公用

論類建立

少例項類靜態員

記憶體佔同

塊區域c#靜態

與非靜態

比較二、c#靜態

1、c#靜態

屬於類所

類例項化前即

使用2、非靜態

訪問類任何員靜態

能訪問類靜態員

3、靜態

類例項化前使用類

非靜態變數必須

例項化才能

配記憶體c#靜態

呼叫判斷非靜態變數使用記憶體址

所使用靜態變數址類

說固定故使用

c#靜態

與非靜態

比較三、c#靜態

種特殊員

屬於類某

具體例項

屬於類本身所靜態

需要首先建立類例項

採用類名.靜態

格式1.static類員

,屬於整

類,即用建立任何

象直接呼叫!

static內部

能現static變數

其static

!且static

能使用this....等關鍵字..

屬於整類!

2.靜態

效率要比例項化高

靜態缺點

自進行銷燬

例項化則

做銷燬3.靜態

靜態變數建立

始終使用同

塊記憶體使用例項式建立

記憶體.4.c#

兩種:例項

,靜態.

c#靜態

與非靜態

比較四、c#靜態

獲取類名稱

靜態用:

string

classname

=system.reflection.methodbase.getcurrentmethod().reflectedtype.fullname;

非靜態用:

string

classname

=this.gettype().fullname;

c#靜態

與非靜態

區別解析旨

詮釋c#靜態

含義希望

解習c#靜態

與非靜態所幫助

java中為什麼要有靜態方法和非靜態方法之分

靜態方法通抄常是提供給外部襲呼叫,無需例項物件即可bai呼叫通常用來du做一些很通用的事情就zhi會做成靜態dao的,因為靜態方法,靜態變數都會佔用靜態記憶體區域 jvm沒有退出是不會釋放記憶體空間的 非靜態方法就不用解析了吧,物件被 了,記憶體也就可以釋放了 靜態方法沒有物件,也就沒有物件的資料,...

無法從靜態上下文中引用非靜態方法a 什麼意思

就是說,你在類裡無法引用物件裡的東西。靜態方法是屬於類的,而非靜態方法則屬於類的例項,也就是物件的,屬於兩個範圍,所以不能直接引用。具體到你的這段 test1類裡的a b 方法要在main裡呼叫,應該先生成test1的一個例項物件,也就是要先test1 t new test1 然後用t.a t.b ...

python中類方法,屬性方法,靜態方法。有什麼區別和聯絡

如果bai只看這個圖,很多人可能du會看的一頭霧水,特別是 學過zhi完全面向dao對版象語言的同學,python 是雙面向的,既可以權面向函式程式設計,也可以物件導向程式設計,所謂面向函式就是單獨一個.py 檔案,裡面沒有類,全是一些函式,呼叫的時候匯入模組,通過模組名.函式名 即可呼叫,完全不需...