編譯單元是 C# 編譯器處理的最小獨立單位,對應單一原始碼檔(.cs),定義了檔案級的整體結構。
結構組成
編譯單元 ::= using指示詞* 全域屬性* 命名空間成員宣告*
- using 指示詞:匯入命名空間或建立別名,僅影響本單元
- 全域屬性:如
[assembly: AssemblyVersion("1.0")],作用於整個組件
- 命名空間成員宣告:型別(類別、結構、介面、列舉、委派)或巢狀命名空間
核心特性
- 一個程式 = 一或多個編譯單元,編譯器統一處理所有單元
- 單元間可相互依賴(循環依賴在單組件內允許,跨組件則禁止)
- using 作用域隔離:單元 A 的
using 完全不影響單元 B
- 部分類別(
partial)可跨單元定義同一型別,編譯時合併
實務意義
- 檔案即邊界:一檔一主要型別,檔名匹配型別名,利於導航與版控
- 編譯平行化:獨立單元可並行編譯,大型專案顯著縮短建置時間
- 增量編譯:單元未變更則跳過,Roslyn 編譯器支援細粒度增量分析
掌握編譯單元概念,有助於理解 C# 專案結構、編譯流程與大型代碼庫的工程化管理。