C# 學習筆記整理

一、程式執行基礎

1.1 程式入口點 (Entry Point)

1.2 Main() 方法特性

1.3 多個 Main() 的處理

1.4 Top-level Statements (C# 9+)

二、CLR 與執行機制

2.1 CLR (Common Language Runtime)

2.2 執行流程

  1. 執行 dotnet run
  2. CLR 啟動並載入程式組件 (.exe)
  3. CLR 檢查組件中的 entry point
  4. CLR 呼叫 Main() 方法

2.3 編譯過程

C# 原始碼 → 編譯成 IL → 打包進 .exe/.dll → 執行時 CLR 載入 IL → JIT 轉成機器碼 → CPU 執行

三、記憶體管理

3.1 Stack (堆疊)

3.2 Heap (堆積)

3.3 參考型別 vs 值型別

特性 class (參考型別) struct (值型別)
記憶體位置 Heap Stack (或內嵌)
變數存放 參考 (reference) 實際值
複製行為 複製參考 複製整份資料
繼承 支援 不支援 (可實作介面)
預設值 null 各欄位預設值

四、資料型別

4.1 基本型別

4.2 字串 (string)

4.3 陣列 (Array)

4.4 型別轉換

五、存取修飾詞

修飾詞 說明 存取範圍
public 完全公開 任何地方
private 私有 類別內部
protected 受保護 類別本身與子類別
internal 內部 同一組件 (Assembly)

六、物件導向概念

6.1 三大特性

6.2 類別成員

6.3 變數解析順序

在方法內使用變數時,編譯器依序查找:

  1. 方法的區域變數
  2. 方法的參數
  3. 類別的欄位

當有命名衝突時,使用 this. 明確指定類別欄位

七、介面與設計原則

7.1 介面 (Interface)

7.2 耦合 (Coupling)

7.3 里氏替換原則 (LSP)

八、泛型 (Generics)

8.1 泛型概念

8.2 泛型優點

8.3 IEnumerable<T>

九、專案與引用管理

9.1 專案結構

9.2 using vs 引用

9.3 引用方式

9.4 編譯時 vs 執行時引用

9.5 NuGet

十、進階語法與特性

10.1 擴充方法 (Extension Method)

10.2 參數傳遞

10.3 例外處理

十一、運算子與控制流程

11.1 運算子優先順序

括號 → 乘除 → 加減 → 比較 → 邏輯 → 左到右

11.2 邏輯運算子差異

運算子 短路 用途
&& / || 邏輯運算 (bool)
& / | 位元運算 (int) 或邏輯運算 (bool)

11.3 除法運算

11.4 三元運算子

11.5 控制結構

十二、多執行緒

12.1 CPU 與執行緒

12.2 C# 多執行緒

十三、其他重要概念

13.1 Stack<T> vs CPU Stack

13.2 靜態類別生命週期

13.3 Unicode

13.4 變數初始化

變數類型 必須初始化 預設值
局部變數
成員變數 0 / null / false
靜態變數 0 / null / false

十四、常用快捷鍵