#if (C# 參考)
更新:2007 年 11 月
#if 可讓您開始一個條件指示詞,測試一個或多個符號是否評估為 true。如果評估為 true,編譯器便會評估介於 #if 和與其最接近的 #endif 指示詞之間的所有程式碼。例如,
#define DEBUG
// ...
#if DEBUG
Console.WriteLine("Debug version");
#endif
您可以使用 == (等於)、!= (不等於)、&& (和) 以及 || (或) 等運算子,來評估多個符號。您也可以使用括弧來分組符號和運算子。
備註
#if 和 #else、#elif、#endif、#define 及 #undef 指示詞,可讓您包含或排除依據一個或多個符號條件的程式碼。這項功能在編譯偵錯組建程式碼,或是編譯特定組態時是最有用的。
以 #if 指示詞開始的條件指示詞必須明確地以 #endif 指示詞結束。
#define 讓您將符號當做運算式傳遞至 #if 指示詞,以定義此符號,這個運算式將評估為 true。
您也可以用 /define 編譯器選項來定義符號。使用 #undef 取消符號定義。
使用 /define 或 #define 定義的符號並不會和具相同名稱的變數發生衝突。這是因為變數名稱並不會傳遞至前置處理器指示詞,而符號只能由前置處理器指示詞進行評估。
使用 #define 建立的符號範圍是在定義此符號的檔案中。
範例
// preprocessor_if.cs
#define DEBUG#define VC_V7
using System;
public class MyClass
{
static void Main()
{
#if (DEBUG && !VC_V7)
Console.WriteLine("DEBUG is defined");
#elif (!DEBUG && VC_V7)
Console.WriteLine("VC_V7 is defined");
#elif (DEBUG && VC_V7)
Console.WriteLine("DEBUG and VC_V7 are defined");
#else
Console.WriteLine("DEBUG and VC_V7 are not defined");
#endif
}
}
DEBUG and VC_V7 are defined