預處理器指令在編譯前處理源碼,以 # 開頭,非語句(無分號)。C# 無獨立預處理器,但指令行為類似。主要用於條件編譯,不創建宏(異於 C/C++)。
| 指令 | 功能 |
|---|---|
| #define | 定義符號 |
| #undef | 取消符號 |
| #if / #elif / #else / #endif | 條件編譯塊 |
| #line | 修改編譯器行號/文件名 |
| #error | 生成編譯錯誤 |
| #warning | 生成編譯警告 |
| #region / #endregion | VS 編輯器代碼折疊區域 |
#define PI
#if PI
Console.WriteLine("PI defined");
#else
Console.WriteLine("PI not defined");
#endif
支援運算符:== != && ||、括號分組。示例:
#define DEBUG
#define VC_V10
#if (DEBUG && !VC_V10)
Console.WriteLine("DEBUG only");
#elif (!DEBUG && VC_V10)
Console.WriteLine("VC_V10 only");
#elif (DEBUG && VC_V10)
Console.WriteLine("Both defined"); // 輸出此行
#else
Console.WriteLine("None");
#endif
#if DEBUG#error 強制編譯失敗提示配置錯誤#region 整理大文件結構預處理器指令必須獨佔一行,前面只能有空白字符。