.net 預處理指令符的使用詳解

什麼是預處理指令符?

當C#編譯器找到一條預處理指令#if,最後找到一條指令時,#endif僅在定義瞭指定符號的情況下,編譯器才會在這些指令之間編譯代碼。與C和C ++不同,您不能將數字值分配給符號。#if C#中的語句為佈爾型,僅測試符號是否已定義。

預處理指令符的使用

  • #if:打開條件編譯,僅在定義瞭指定符號的情況下才編譯代碼。
  • #elif:根據是否定義瞭指定的符號,關閉前面的條件編譯並打開新的條件編譯。
  • #else:如果未定義先前指定的符號,則關閉之前的條件編譯並打開新的條件編譯。
  • #endif:關閉前面的條件編譯。

條件編譯(編譯器會根據不同配置環境來執行):

#if DEBUG
      Console.WriteLine("我是debug 模式!");
#elif RELEASE
      Console.WriteLine("我是relsease 模式!");
#else
      Console.WriteLine("我是自定義模式!");
#endif
      Console.WriteLine("我是沒有被任何預處理過得輸出!");

當前解決方案編譯環境為Debug

輸出結果:

常用指令符:

自定義指令符

舉例:我們需要兩個版本的代碼,基礎版、更多功能的企業版本。此時我們就可以通過自定義指令符來滿足定制化功能。

  • #define 自定義指令符
  • #undef 刪除指令符

也可以通過屬性的方式來執行方法

使用Visual Studio快速定義指令符

VS站點-》右鍵-》屬性-》生成-》常規

定義生效後,通過csproj工程文件我們可以看到有兩條PropertyGroup對應不同的Condition

定義指令符區域

你還可以使用以下兩個預處理程序指令定義可以折疊在大綱中的代碼區域:

  • #region:開始一個區域。
  • #endregion:結束區域
#region MyClass definition
public class MyClass
{
  static void Main()
  {
  }
}
#endregion

參考鏈接

https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/preprocessor-directives

https://blog.walterlv.com/post/how-to-define-preprocessor-symbols.html

https://www.cnblogs.com/woxihuadabai/p/8005892.html

到此這篇關於.net 預處理指令符的使用的文章就介紹到這瞭,更多相關.net 預處理指令符內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!