嗨嗨~今天要來說說區塊變數、區域變數、靜態變數和類別欄位
首先來講區塊變數。
區塊變數(block level variables)是指程式中"{}"括住的多行敘述範圍內所宣告的變數,只能在這個區塊使用,如for、switch敘述區域內宣告的變數,在這個區塊外的程式碼,就算在同一方法內都無法存取。例如:
static void Main(string[] args)
{
for(int i = 0; i < 10; i++)
{
Console.WriteLine(i);
}
Console.WriteLine(i);
}
這樣寫就會報錯
因為變數i是在for裡面宣告的,因此在for外都無法使用變數i,編譯器不認識這個i變數。
再來是區域變數。
區域變數(local variables)是指在方法內宣告的變數,或是方法的引數,區域變數一離開方法,生命週期就結束了。例如以下的x,y,z就是區域變數:
static void Main(string[] args)
{
int x, y,z;//區域變數x,y,z
for(int i = 0; i < 10; i++)
{
string str;//區塊變數str
Console.WriteLine(i);
}
}
區塊變數一般也可稱為區域變數。
下一個是靜態變數,若在方法內所宣告的變數前加上static,則此變數在類別內變成靜態變數。靜態變數宣告必須要在方法外面宣告,當離開方法的時候,變數值不會釋放掉,下次呼叫此方法時,所保留變數能繼續使用,直到程式結束執行。當程式執行中,static變數就會被放在全域變數區,因此不需要建立物件就能直接存取這個變數,且允許多個物件共用一份靜態變數。
定義static靜態變數後,在宣告變數之後若沒有指定值,C#會依照變數的資料型別,直接給預設值,下表為各種資料型態的預設值:
資料型態 | 預設值 |
---|---|
sbyte,byte,short,ushort,int,uint,long,ulong | 0 |
char | '\x0000' |
float | 0.0f |
double | 0.0d |
decimal | 0.0m |
最後是類別欄位(非靜態成員)
物件屬性(或稱欄位)和靜態變數一樣,不同的是因為物件屬性是放在Heap區,靜態變數是放在全域變數區,因此物件屬性必須建立該物件實體才能使用,當物件生命週期結束後,非靜態的物件屬性生命就會跟著結束。
今天就先這樣結束啦~
大家掰掰~