官术网_书友最值得收藏!

2.10 預處理命令

C#中有著預編譯指令,支持條件編譯、警告、錯誤報告和編譯行控制等。可用的預處理指令如下所示。

□ #define symbol

□ #undef symbol

□ #if symbol [operator symbol2]

□ #else

□ #elif symbol [operator symbol2]

□ #endif

□ #warning text text指在編譯器中輸出的警告文字

□ #error text text指在編譯器中輸出的錯誤信息

□ #line number [file]

1. #region和#endregion

上述預處理指令中,最為常用的是#region和#endregion指令。這兩個指令的組合,可以把一段代碼標記為給定名稱的一個塊。將塊所實現的功能寫在#region行中,即為該塊的名稱。

如定義一個函數,接收一個字符串類型參數,用于輸出傳入的參數值。創建控制臺應用程序,如練習2-7所示。

【練習2-7】

定義一個方法,使用#region和#endregion指令將其包含在內。在#region指令后的同一行,寫下對方法的解釋“輸出字符串”,如圖2-8所示。寫好后,#region指令左側有“-”標記,單擊該標記,如圖2-9所示。該方法被顯示為一個矩形框,顯示該方法的解釋。

圖2-8 寫入#region指令

圖2-9 #region指令效果

如圖2-9所示,該方法以一種更直觀的方式顯示給開發人員。當項目中程序較多時,通過這種方式,可以使程序清晰可觀,方便閱讀。

2. #define和#undef

#define類似于聲明一個變量,但是這個變量沒有真正的值,只是存在而已。代碼沒有任何的意義僅僅是在編譯器編譯代碼的時候存在。

#undef相反,刪除符號定義。如果這個符號不存在,這句話就沒有任何意義,如果這個符號存在,#define也不起作用。

注意

聲明的時候需要在第一行代碼處聲明且不需要分號結尾,不能放在代碼的中間!

3. #if、#elif、#else、#endif

這些指令告訴編譯器是否需要編譯某個代碼塊,在#if后面寫語句塊執行的條件,而在#if與#endif中間,寫該條件下執行的語句塊。其格式如下所示:

#if 執行條件
該條件下執行的語句塊
#endif

#elif與#if和#else嵌套使用,增加語句塊執行的條件。它們必須以#endif來結尾。其語法如下:

#if 執行條件1
該條件下執行的語句塊
#elif執行條件2(在不滿足執行條件1的情況下)
執行語句塊
#else
執行語句塊
#endif

4. #warning 和#error

當編譯器遇見#warning和#error的時候分別產生警告和錯誤,以及給用戶顯示#warning后面的文本信息,并且繼續進行;如果編譯器遇見#error指令,就會輸出用戶自定義的錯誤消息,作為一個編譯錯誤信息,然后立即退出編譯,不會生成代碼。

5. #pragma

#pragma指令可以抑制或者是恢復指定的編譯警告。和命令行選項不同,#pragma指令可以在類或者方法上執行,對抑制警告的內容和抑制的時間進行更加精細的控制。

主站蜘蛛池模板: 翼城县| 朔州市| 梁平县| 扶沟县| 中卫市| 天气| 安阳县| 安徽省| 长垣县| 东安县| 阿鲁科尔沁旗| 曲水县| 华坪县| 昌黎县| 永寿县| 同德县| 安徽省| 中江县| 阆中市| 武汉市| 内黄县| 永善县| 东兰县| 舞阳县| 德阳市| 青州市| 河间市| 大埔区| 益阳市| 张北县| 胶南市| 武定县| 舟曲县| 岱山县| 施甸县| 宝坻区| 诸城市| 神农架林区| 昌黎县| 荔浦县| 达孜县|