- C# 基礎教程
- C# - 首頁
- C# - 概述
- C# - 環境
- C# - 程式結構
- C# - 基本語法
- C# - 資料型別
- C# - 型別轉換
- C# - 變數
- C# - 常量
- C# - 運算子
- C# - 決策制定
- C# - 迴圈
- C# - 封裝
- C# - 方法
- C# - 可空型別
- C# - 陣列
- C# - 字串
- C# - 結構體
- C# - 列舉
- C# - 類
- C# - 繼承
- C# - 多型
- C# - 運算子過載
- C# - 介面
- C# - 名稱空間
- C# - 預處理器指令
- C# - 正則表示式
- C# - 異常處理
- C# - 檔案 I/O
- C# 高階教程
- C# - 屬性
- C# - 反射
- C# - 屬性
- C# - 索引器
- C# - 委託
- C# - 事件
- C# - 集合
- C# - 泛型
- C# - 匿名方法
- C# - 不安全程式碼
- C# - 多執行緒
- C# 有用資源
- C# - 問題與解答
- C# - 快速指南
- C# - 有用資源
- C# - 討論
C# - 預處理器指令
預處理器指令指示編譯器在實際編譯開始之前預處理資訊。
所有預處理器指令都以 # 開頭,並且一行中預處理器指令之前只能出現空格字元。預處理器指令不是語句,因此它們後面沒有分號 (;)。
C# 編譯器沒有單獨的預處理器;但是,這些指令的處理方式就像存在一個一樣。在 C# 中,預處理器指令用於幫助進行條件編譯。與 C 和 C++ 指令不同,它們不用於建立宏。預處理器指令必須是行中唯一的指令。
C# 中的預處理器指令
下表列出了 C# 中可用的預處理器指令:
| 序號 | 預處理器指令及說明 |
|---|---|
| 1 | #define 它定義一個字元序列,稱為符號。 |
| 2 | #undef 它允許您取消定義符號。 |
| 3 | #if 它允許測試一個或多個符號以檢視它們是否計算為真。 |
| 4 | #else 它允許與 #if 一起建立複合條件指令。 |
| 5 | #elif 它允許建立複合條件指令。 |
| 6 | #endif 指定條件指令的結束。 |
| 7 | #line 它允許您修改編譯器的行號和(可選)錯誤和警告輸出的檔名。 |
| 8 | #error 它允許從程式碼中的特定位置生成錯誤。 |
| 9 | #warning 它允許從程式碼中的特定位置生成一級警告。 |
| 10 | #region 它允許您指定一段程式碼,在使用 Visual Studio 程式碼編輯器的概述功能時,可以展開或摺疊該程式碼。 |
| 11 | #endregion 它標記 #region 塊的結束。 |
#define 預處理器
#define 預處理器指令建立符號常量。
#define 允許您定義一個符號,以便透過使用該符號作為傳遞給 #if 指令的表示式,該表示式計算為真。其語法如下:
#define symbol
以下程式對此進行了說明:
#define PI
using System;
namespace PreprocessorDAppl {
class Program {
static void Main(string[] args) {
#if (PI)
Console.WriteLine("PI is defined");
#else
Console.WriteLine("PI is not defined");
#endif
Console.ReadKey();
}
}
}
編譯並執行上述程式碼時,會產生以下結果:
PI is defined
條件指令
您可以使用 #if 指令建立條件指令。條件指令對於測試一個或多個符號以檢查它們是否計算為真很有用。如果它們確實計算為真,則編譯器會評估 #if 和下一個指令之間的所有程式碼。
條件指令的語法為:
#if symbol [operator symbol]...
其中,symbol 是要測試的符號的名稱。您還可以使用 true 和 false 或在符號前加上否定運算子。
operator symbol 是用於評估符號的運算子。運算子可以是以下任一運算子:
- ==(相等)
- !=(不相等)
- &&(並且)
- ||(或)
您還可以使用括號將符號和運算子組合在一起。條件指令用於為除錯版本編譯程式碼或在為特定配置編譯時編譯程式碼。以 #if 指令開頭的條件指令必須顯式地以 #endif 指令結束。
以下程式演示了條件指令的使用:
#define DEBUG
#define VC_V10
using System;
public class TestClass {
public static void Main() {
#if (DEBUG && !VC_V10)
Console.WriteLine("DEBUG is defined");
#elif (!DEBUG && VC_V10)
Console.WriteLine("VC_V10 is defined");
#elif (DEBUG && VC_V10)
Console.WriteLine("DEBUG and VC_V10 are defined");
#else
Console.WriteLine("DEBUG and VC_V10 are not defined");
#endif
Console.ReadKey();
}
}
編譯並執行上述程式碼時,會產生以下結果:
DEBUG and VC_V10 are defined