iT邦幫忙

2022 iThome 鐵人賽

DAY 16
0
Software Development

C#世界初探險系列 第 16

2022鐵人賽 Day 16 區塊變數、區域變數、靜態變數和類別欄位

  • 分享至 

  • xImage
  •  

嗨嗨~今天要來說說區塊變數、區域變數、靜態變數和類別欄位
首先來講區塊變數。
區塊變數(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區,靜態變數是放在全域變數區,因此物件屬性必須建立該物件實體才能使用,當物件生命週期結束後,非靜態的物件屬性生命就會跟著結束。
今天就先這樣結束啦~
大家掰掰~


上一篇
2022鐵人賽 Day 15 引數的傳遞方式
下一篇
2022鐵人賽 Day 17 物件/類別介紹
系列文
C#世界初探險30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言