[C#, CSharp, C Sharp 教學 教程 教材 Tutorial] 生命週期(Life Cycle & Life Scope)
YehYeh\'s Notepad yehyeh@gmail.com 

[C#, CSharp] 生命週期(Life Cycle)

生命週期

  • 敘述區塊(Statement Block):被大括號框住的程式碼通常稱為區塊或敘述區塊
  • 生命週期:每個變數都會有其存在期間(Storage Duration),即程式執行時變數存活的時間
  • 生存空間(Scope):變數可被存取的程式碼區塊
    • 區域變數:又叫自動變數(Automatic Variable)
      • 生命週期與生存空間:起始於變數宣告,結束於宣告敘述所在的區塊的大右括號。
      • 同一區塊內不可宣告同名的區域變數
      • 可用auto關鍵字宣告自動變數,但因預設值就是auto,所以通常都不需要加auto
      • 在生命週期內會佔用記憶體
    • 全域變數(Global Variable)
      • 宣告在所有區塊和類別之外的變數
      • 不可宣告同名的全域變數
      • 若沒有給定初始值,會自動給0
      • 生命週期:在程式執行到程式結束期間都會暫用記憶體
      • 生存空間:從宣告後的任意程式碼區塊都可存取
    • 靜態變數(Static Variable)
      • 以關鍵字static修飾的變數
        • static  int  num = 0;
          
      • 不可宣告同名的靜態變數
      • 若沒有給定初始值,會自動給0
      • 生命週期:在程式執行到程式結束期間都會暫用記憶體
      • 生存空間:任意程式碼區塊皆可存取
  • 生命週期與生存空間:
    • 生命週期是指變數存活的期間,即變數存活在記憶體的期間。
    • 生存空間是指變數可被存取的程式碼區塊。
    • 兩者意義接近,但一個是指存活時間(時間),一個是指活動範圍(空間),所以有著本質上的差異。
    • 例如說有一個人活了70歲,而他出生在一個沒有飛機和船的海島國家,他的生命週期就是0~70歲這段時間,生存空間就是他出生的國家。
  • 當一個區塊宣告一個和全域變數同名的區域變數時
    • 直接存取到的變數為區塊變數
    • 加上範圍運算子:: 可存取到全域變數
    生存範圍
Δ 回到最上方