#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

請參閱

概念

C# 程式設計手冊

參考

C# 前置處理器指示詞

其他資源

C# 參考