C#中if和#if區別


if的作用是程序流控制,會直接編譯、執行。
#if是對編譯器的指令,其作用是告訴編譯器,有些語句行希望在條件滿足時才編譯。

--------------------------------------------------------------------------------------------------------------------

#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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM