日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

预处理指令(C#)

發(fā)布時間:2023/12/10 C# 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 预处理指令(C#) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

    • 預處理指令簡介
    • #define、#undef
    • #if、#elif、#else、#endif
    • #warning、#error
    • #region、#endregion
    • #line、#line default
    • #pragma

預處理指令簡介

微軟對預處理指令解釋鏈接
https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/preprocessor-directives/index
預處理指令不會轉(zhuǎn)化為可執(zhí)行代碼中的命令,但會影響編譯過程的各個方面。例如使用預處理指令可以禁止編譯器編譯代碼的某一部分。
預處理器指令的開頭都有符號#

#define、#undef

#define的用法如下所示:

#define DEBUG

它告訴編譯器存在給定名稱的符號,在本例中是DEBUG。這有點類似于聲明的一個變量,但這個變量并沒有真正的值,只是存在而已。這個符號不是實際代碼的一部分,而只在編譯器編譯代碼時存在。在C#代碼中它沒有任何意義。
#undef 刪除符號的定義:

#undef DEBUG

如果符號不存在,#undef就沒有任何作用。同樣如果符號已經(jīng)存在,則define也不起作用。
必須把#define和#undef命令放在C#文件的開頭位置,在聲明要編譯的任何對象的代碼之前。

#if、#elif、#else、#endif

#if與#endif

# if DEBUG 。。。。。。。代碼 # endif

包含在#if與#endif之間代碼只有在定義了符號DEBUG后才會執(zhí)行,否則將會忽略代碼。

#elif(=else if)、#else
這兩個預處理指令就和if/else的指令用法一樣。
#if與#elif還支持一組邏輯運算符操作,“!”、“==”、“!=”、“||”。如果符號存在認為是true否則為false。

#warning、#error

當編譯器遇到這兩個指令時,會分別產(chǎn)生警告或錯誤。

  • 如果編譯器遇到#warning指令,會向用戶顯示#warning指令后邊的文本,之后編譯繼續(xù)進行。
  • 如果編譯器遇到#error指令,會向用戶顯示#error指令后邊的文本,作為一條編譯錯誤消息,然后會立即退出編譯,不會生成IL代碼。

#region、#endregion

#region和#endregion指令用于把一段代碼視為有給定名稱的一個塊

#region 代碼片名稱 在這里插入代碼片 #endregion

在vs中使用#region和#endregion指令的塊可以被折疊。這樣代碼布局看起來更合理。

#line、#line default

#line指令可以用于改變編譯器在警告和錯誤信息中顯示的文件名和行號信息。這條指令用的并不多。
#line default把行號還原為默認的行號

#pragma

#pragma指令可以抑制或者還原指定的編譯警告。與命令行選項不同,#pragma指令可以在類或方法級別實現(xiàn),對抑制警告的內(nèi)容和抑制的時間進行更精細的控制。
下邊的例子禁止字段未使用警告,然后在編譯MyClass類后還原警告:

#pragma warning disable 169 public class MyClass { int A=1} #pragma warning restore 169 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的预处理指令(C#)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。