C# 靜態成員和方法的學習小結


C# 靜態成員和方法的學習小結

數據成員:
數據成員可以分靜態變量、實例變量兩種.
靜態成員:靜態成員變量是和類相關聯的,可以作為類中"共"有的變量(是一個共性的表現),他不依賴特定對象的存在,訪問的時候通過類名加點操作符加變量名來訪問.

實例成員:實例成員變量是和對象相關聯的,訪問實例成員變量依賴於實例的存在.

函數成員:
方法可以主要分為靜態方法,實例方法

靜態方法:靜態方法是不屬於特定對象的方法,靜態方法可以訪問靜態成員變量,靜態方法不可以直接訪問實例變量,可以在實例函數調用的情況下,實例變 量做為參數傳給靜態方法。靜態
方法也不能直接調用實例方法,可以間接調用,首先要創建一個類的實例,然后通過這一特定對象來調用靜態方法。

實例方法:一個實例方法的執行與特定對象關聯,他的執行需要一個對象存在。實例方法可以直接訪問靜態變量和實例變量,實例方法可以直接訪問實例方 法、和靜態方法,靜態方法的訪問
方式為類名加點操作符加變量名。當多個實例對象存在時,內存中並不是存在美個特定的實例方法的拷貝,而是,相同類的所有對 象都共享每個實例方法的一個拷貝(實例方法只占用“一套
”空間)。

如果將類中的某個成員聲明為static,則稱該成員為靜態成員。一般來說,靜態成員是屬於類所有的,而非靜態成員則屬於類的實例的。每創建一個類的實 例,都在內存中為非靜態成員開辟
一片區域。而類的靜態成員為類所有,為這個類的所有實例共享。無論這個類創建了多少副本,一個靜態成員在內存中只占有一塊 區域。

C#類中靜態成員變量的生命周期問題,就是什么時候創建,什么時候銷毀已聲明元素的“生存期”是元素可供使用的時間周期。變量是唯一具有生存期的元 素;為此,編譯器將過程參數和函
數返回值視為變量的特殊情況。變量的生存期表示它可以保留值的時間周期。在生存期內變量的值可以更改,但變量總是保留某些 值。
生存期:
實例變量:都具有與它的實例相同的生存期。當類或結構的實例終止時,它的非共享變量丟失它們的值。類或結構的每個新實例都創建它的所有非共享元素並初始化非共享變量。
靜態變量: 通常在應用程序的整個運行期間都存在。Shared 元素被一直保留到應用程序停止運行時。

類變量:static變量在內存中只有一個,存放在方法區,屬於類變量,被所有實例所共享
銷毀:類被卸載時,靜態變量被銷毀,並釋放內存空間。static變量的生命周期取決於類的生命周期
類初始化順序:

靜態變量、靜態代碼塊初始化
構造函數
自定義構造函數

靜態方法何時使用比較合適?
1.當你這個類中的這個方法不需要對象就能運行時,使用靜態方法,通常都是在工具類中定義靜態方法!這樣使用工具類不必創建
對象,可以直接類名.方法名來使用!
例如:比如說現在你自己寫了一個給數組排序的方法sort(arr);這時我們把它和別的一些方法定義成靜態方法,然后這個類整體可
以看作是一個工具類,假設類名是Tools,那么當你在別的類中想要使用數組排序方法時,就可以直接Tools.sort(arr);來給你指定
的數組進行排序(當然那個工具類還是要導入包中的),而不用像一般類那樣需要創建對象才能調用類中的方法,像這樣Tools
tools=new Tools();tools.sort(arr);

靜態成員變量何時使用比較合適?

1. static修飾成員變量 :如果有數據需要被共享給所有對象使用時,那么就可以使用static修飾。
靜態成員變量的訪問方式:
方式1: 可以使用對象進行訪問。
格式: 對象.變量名。
方式二: 可以使用類名進行訪問。
格式: 類名.變量名;
注意:
1. 非靜態的成員變量只能使用對象進行訪問,不能使用類名進行訪問。
2. 千萬不要為了方便訪問數據而使用static修飾成員變量,只有成員變量的數據是真正需要被共享的時候才使用static修飾。
static修飾成員變量的應用場景: 如果一個數據需要被所有對象共享使用的時候,這時候即可實用static修飾。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM