C#預處理指令

預處理器指令用來在編譯開始之前給編譯器指示預處理資訊。

所有預處理程式指令以符號#開頭,並且只有空格字元在一行上,空白字元可預處理器指令之前出現。 預處理器指令不是語句,所以它們不以分號(;)結尾。

C# 編譯器沒有分隔預處理器;,指令被處理為只有一個。 在 C# 中,預處理指令用於指示條件編譯。與C語言和C++指令不同,它們不用於創建宏。 預處理程式指令必須是一行中的唯一指令。

C# 預處理器指令

下表列出了 C# 中提供的預處理指令:

預處理指令 描述
#define 定義一個叫作符號的字元序列。
#undef 用於取消定義的符號。
#if 用來測試符號以查看它們是否為真。
#else 用來與#if來創建一個複合條件指令。
#elif 用來創建一個複合條件指令。
#endif 指定條件指令的結束。
#line 用於修改編譯器的行號和(可選)修改錯誤和警告的檔案名輸出。
#error 用於從代碼中的特定位置生成錯誤。
#warning 用於從代碼中的特定位置生成一級警告。
#region 允許您在使用Visual Studio代碼編輯器的概述功能時指定可以展開或折疊的代碼塊。
#endregion 用於標誌著#region塊的結束。

#define預處理程式

#define預處理程式指令創建符號常量。
#define允許定義一個符號,通過使用該符號作為傳遞給#if指令的運算式,運算式的計算結果為true。其語法如下:

#define symbol

以下程式演示如何使用#define指令:

#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指令創建條件指令。條件指令用於測試符號檢查它們的值是否為真。 如果它們評估求值為true,編譯器將評估求值#if到下一個指令之間的所有代碼。

條件指令的語法是:

#if symbol [operator symbol]...

其中,符號(symbol)是要測試的符號的名稱。也可以使用布爾值:truefalse,或者使用否定運算符加到符號的前面。

運算符符號是用於評估符號的運算符。運算符可以是以下任一項:

  • ==(相等)
  • !=(不等式)
  • &&(和)
  • || (或)

也可以使用括弧對符號和運算符進行分組。在用於編譯調試版本的代碼或編譯特定配置時可使用條件指令。 以#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

上一篇: C#命名空間 下一篇: C#正則運算式