# C# 預處理器指令
預處理器指令指導編譯器在實際編譯開始之前對信息進行預處理。
所有的預處理器指令都是以 # 開始。且在一行上,只有空白字符可以出現在預處理器指令之前。預處理器指令不是語句,所以它們不以分號(;)結束。
C# 編譯器沒有一個單獨的預處理器,但是,指令被處理時就像是有一個單獨的預處理器一樣。在 C# 中,預處理器指令用于在條件編譯中起作用。與 C 和 C++ 不同指令不用,它們不是用來創建宏。一個預處理器指令必須是該行上的唯一指令。
## C# 預處理器指令列表
下表列出了 C# 中可用的預處理器指令:
| 預處理器指令 | 描述 |
| --- | --- |
| #define | 它用于定義一系列成為符號的字符。 |
| #undef | 它用于取消定義符號。 |
| #if | 它用于測試符號是否為真。 |
| #else | 它用于創建復合條件指令,與 #if 一起使用。 |
| #elif | 它用于創建復合條件指令。 |
| #endif | 指定一個條件指令的結束。 |
| #line | 它可以讓您修改編譯器的行數以及(可選地)輸出錯誤和警告的文件名。 |
| #error | 它允許從代碼的指定位置生成一個錯誤。 |
| #warning | 它允許從代碼的指定位置生成一級警告。 |
| #region | 它可以讓您在使用 Visual Studio Code Editor 的大綱特性時,指定一個可展開或折疊的代碼塊。 |
| #endregion | 它標識著 #region 塊的結束。 |
## #define 預處理器
#define 預處理器指令創建符號常量。
#define 允許您定義一個符號,這樣,通過使用符號作為傳遞給 #if 指令的表達式,表達式將返回 true。它的語法如下:
```
#define symbol
```
下面的程序說明了這點:
```
#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 指令來創建一個條件指令。條件指令用于測試符號是否為真。如果為真,編譯器會執行 #if 和下一個指令之間的代碼。
條件指令的語法:
```
#if symbol [operator symbol]...
```
其中,_symbol_ 是要測試的符號名稱。您也可以使用 true 和 false,或在符號前放置否定運算符。
_運算符符號_是用于評價符號的運算符。可以運算符可以是下列運算符之一:
* == (equality)
* != (inequality)
* && (and)
* || (or)
您也可以用括號把符號和運算符進行分組。條件指令用于在調試版本或編譯指定配置時編譯代碼。一個以 **#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# 簡介
- C# 環境
- C# 程序結構
- C# 基本語法
- C# 數據類型
- C# 類型轉換
- C# 變量
- C# 常量
- C# 運算符
- C# 判斷
- C# 循環
- C# 封裝
- C# 方法
- C# 可空類型(Nullable)
- C# 數組(Array)
- C# 字符串(String)
- C# 結構(Struct)
- C# 枚舉(Enum)
- C# 類(Class)
- C# 繼承
- C# 多態性
- C# 運算符重載
- C# 接口(Interface)
- C# 命名空間(Namespace)
- C# 預處理器指令
- C# 正則表達式
- C# 異常處理
- C# 文件的輸入與輸出
- C# 高級
- C# 特性(Attribute)
- C# 反射(Reflection)
- C# 屬性(Property)
- C# 索引器(Indexer)
- C# 委托(Delegate)
- C# 事件(Event)
- C# 集合(Collection)
- C# 泛型(Generic)
- C# 匿名方法
- C# 不安全代碼
- C# 多線程
- ASP.NET 簡介
- Web Pages 教程
- ASP.NET Web Pages - 教程
- ASP.NET Web Pages - 添加 Razor 代碼
- ASP.NET Web Pages - 頁面布局
- ASP.NET Web Pages - 文件夾
- ASP.NET Web Pages - 全局頁面
- ASP.NET Web Pages - HTML 表單
- ASP.NET Web Pages - 對象
- ASP.NET Web Pages - 文件
- ASP.NET Web Pages - 幫助器
- ASP.NET Web Pages - WebGrid 幫助器
- ASP.NET Web Pages - Chart 幫助器
- ASP.NET Web Pages - WebMail 幫助器
- ASP.NET Web Pages - PHP
- ASP.NET Web Pages - 發布網站
- Razor 教程
- ASP.NET Razor - 標記
- ASP.NET Razor - C# 和 VB 代碼語法
- ASP.NET Razor - C# 變量
- ASP.NET Razor - C# 循環和數組
- ASP.NET Razor - C# 邏輯條件
- ASP.NET Razor - VB 變量
- ASP.NET Razor - VB 循環和數組
- ASP.NET Razor - VB 邏輯條件
- MVC 教程
- ASP.NET MVC 教程
- ASP.NET MVC - Internet 應用程序
- ASP.NET MVC - 應用程序文件夾
- ASP.NET MVC - 樣式和布局
- ASP.NET MVC - 控制器
- ASP.NET MVC - 視圖
- ASP.NET MVC - SQL 數據庫
- ASP.NET MVC - 模型
- ASP.NET MVC - 安全
- ASP.NET MVC - HTML 幫助器
- ASP.NET MVC - 發布網站
- Web Forms 教程
- ASP.NET Web Forms - 教程
- ASP.NET Web Forms - HTML 頁面
- ASP.NET Web Forms - 服務器控件
- ASP.NET Web Forms - 事件
- ASP.NET Web Forms - HTML 表單
- ASP.NET Web Forms - 維持 ViewState
- ASP.NET Web Forms - TextBox 控件
- ASP.NET Web Forms - Button 控件
- ASP.NET Web Forms - 數據綁定
- ASP.NET Web Forms - ArrayList 對象
- ASP.NET Web Forms - Hashtable 對象
- ASP.NET Web Forms - SortedList 對象
- ASP.NET Web Forms - XML 文件
- ASP.NET Web Forms - Repeater 控件
- ASP.NET Web Forms - DataList 控件
- ASP.NET Web Forms - 數據庫連接
- ASP.NET Web Forms - 母版頁
- ASP.NET Web Forms - 導航
- Web Pages 參考手冊
- ASP.NET Web Pages - 類
- ASP.NET Web Pages - WebSecurity 對象
- ASP.NET Web Pages - Database 對象
- ASP.NET Web Pages - WebMail 對象
- ASP.NET Web Pages - 更多幫助器
- MVC - 參考手冊
- Web Forms 參考手冊
- ASP.NET Web Forms - HTML 服務器控件
- ASP.NET Web Forms - Web 服務器控件
- ASP.NET Web Forms - Validation 服務器控件
- 免責聲明