C#中if和#if區別

來源:互聯網
上載者:User

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_V7using 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
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.