程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#預處理器指令(1)

C#預處理器指令(1)

編輯:關於C語言
#有許多名為預處理器指令的命令。這些命令從來不會被翻譯為可執行代碼中的命令,但會影響編譯過程的各個方面。例如,預處理器可禁止編譯器編譯代碼的某一部分。如果計劃發布兩個版本的代碼,比如基本版本和企業版本,或者針對不同的.NET Framework版本進行編碼,就可以使用這些指令。在Anthem.Net的代碼中我們經常可以看到這種用法。

預處理器指令的開頭都有符號#。

注意:

C#中並沒有一個像C++那樣的獨立預處理器,所謂的預處理器指令仍由編譯器處理。

下面將對這些指令逐一介紹。

1. #define和#undef

#define可以定義符號。當將符號用作傳遞給#if指令的表達式時,此表達式的計算結果true。如

#define DEBUG

它告訴編譯器存在給定名稱的符號,在本例中是DEBUG。這個符號不是實際代碼的一部分,只在編譯代碼時存在。

#undef正好相反,它刪除一個符號。

必須把#define和#undef命令放在C#源碼的開頭,即在要編譯的任何代碼之前。它不像C++中那樣可以定義常數值。

#define本身並無大用,它需要配合#if指令使用。

#define DEBUG
int DOSw(double x)
{
#if DEBUG
COnsole.WriteLine("x is"+X);
#edif
}

2. #if, #elif, #else和#endif

這些指令告訴編譯器是否要編譯某個代碼塊。看下面的方法:

static void PrintVersion()
  {
    #if V3
      Console.WriteLine("Version 3.0");
    #elif V2
      Console.WriteLine("Version 2.0");
    #else
      Console.WriteLine("Version 1.0");
    #endif
  }

上面的代碼會根據定義的符號來打印不同的版本信息。 這種方式成為條件編譯。

注意:

使用#if不是條件編譯代碼的唯一方式,C#還提供了通過Conditional屬性的機制。

#if和#elif還支持一組邏輯運算符!=,==,!=和|| 。如果符號存在,符號的值被認為是true,否則為false,如:

#if V3 || (V2 == true) // if 定義了V3或V2符號...

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved