最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c#預處理指令分析

 更新時間:2020年08月25日 11:06:35   作者:編碼者頻道  
這篇文章主要介紹了c#預處理指令的相關資料,幫助大家更好的理解和學習c#,感興趣的朋友可以了解下

預處理指令

這些指令/命令不會轉換為可執(zhí)行代碼,但會影響編譯過程的各個方面;列如,可以讓編譯器不編譯某一部分代碼等。

C#中主要的預處理指令

#define和#undef

#define指令定義:

#define DEBUG

它告訴編譯器存在DEBUG這個符號;這個符號不是實際代碼的一部分,而只是在編譯器編譯代碼時候可能會根據這個符號做條件編譯。

#undef定義:

#undef DEBUG

用來移除定義的符號DEBUG。如果不存在這樣的標記,#undef指令則不會生效。同樣,用#define再次定義一個同名的標記也不會有任何變化。

注意:

  • 你需要將#define和#undef指令寫在實際業(yè)務代碼開始之前的位置。
  • #define本身沒有什么用,需要和其他預處理器指令結合使用;比如 #if

#if, #elif, #else和#endif

這些指令告訴編譯器是否要編譯包含在其中的代碼塊。例如:

int DoSomeWork(double x)
{
  // do something
  #if DEBUG
    Console.WriteLine($"x is {x}");
  #endif
}

這段代碼中的Console.Writeline語句,只有在前面用#define指令定義了符號DEBUG后才會在編譯的時候,真正被編譯到;

如果編譯器沒發(fā)現(xiàn)DEBUG符號,就會在編譯的時候忽略這句代碼?!?/p>

#elif(= else if)和#else指令可以用在#if塊中:

#define ENTERPRISE
#define W10
// further on in the file
#if ENTERPRISE
// do something
  #if W10
  // some code that is only relevant to enterprise
  // edition running on W10
  #endif
#elif PROFESSIONAL
// do something else
#else
// code for the leaner version
#endif

#if和#elif還支持有限的一些邏輯操作符,你可以用使用!,==,!=和||等。

一個標記如果存在,則認為是true,如果沒有定義,就認為是false,因此你也可以這樣使用:

	
#if W10 && (ENTERPRISE==false) // if W10 is defined but ENTERPRISE isn't

#warning和#error

當編譯器遇到#warning的時候,會產生警告信息;

當編譯器遇到#error的時候,會產生錯誤信息;

  class Program
  {
    static void Main(string[] args)
    {
 
#warning this is a warning message which will be shown when compile
 
      Console.WriteLine("Hello World!");
 
#error this is a error message, and will break build
    }
  }

編譯結果:

Program.cs(10,10): warning CS1030: #warning: 'this is a warning message which will be shown when compile' [/define_warning/define_warning.csproj]
Program.cs(14,8): error CS1029: #error: 'this is a error message, and will break build' [/define_warning/define_warning.csproj]
1 Warning(s)
1 Error(s)

  使用這些指令可以檢查#define語句是不是做錯了什么事,使用#warning可以提醒要做些事情:

#if DEBUG && RELEASE
#error "You've defined DEBUG and RELEASE simultaneously!"
#endif
#warning "Don't forget to remove this line before the boss tests the code!"
Console.WriteLine("*I love this job.*");

#region和#endregion

可以用來標識一段代碼,在Visual Studio或其他能夠識別的IDE里比較有用。

#region Member Field Declarations
int x;
double d;
Currency balance;
#endregion

#line

#line指令可以用來改變編譯器輸出警告和錯誤時相應的文件名和行號信息。這個實際中,用的可能會比較少。

主要是在用第三方包的時候,有時候會導致編譯器報告的行號或文件名與實際不匹配。

#line可以用于還原這種匹配。

#line 164 "Core.cs" // We happen to know this is line 164 in the file Core.cs,
// before the intermediate package mangles it.
// later on
#line default // restores default line numbering

#pragma

#pragma指令可以用來終止或恢復某個指定編號到編譯器警告。

與命令行選項不同,#pragma指令可以在類或方法級別實現(xiàn)。

例如:

class Program
{
  static void Main(string[] args)
  {
    int i = 0;
    Console.WriteLine("Hello World!");
  }
}

  編譯是會有warning:

Program.cs(9,17): warning CS0219: The variable 'i' is assigned but its value is never used [/define_warning/define_warning.csproj]
1 Warning(s)
0 Error(s)  

從warning信息可以看出是warning CS0219,加入#pragma后就不會有warning了。

#pragma warning disable CS0219
  public class Program
  {
    static void Main(string[] args)
    {
      int i = 0;
      Console.WriteLine("Hello World!");
    }
  }
#pragma warning restore CS0219

注意:warning的代碼是區(qū)分大小寫的,CS2019要大寫,如果寫成cs2019則沒有用。

以上就是c#預處理指令分析的詳細內容,更多關于c#預處理指令的資料請關注腳本之家其它相關文章!

相關文章

  • C#的編碼規(guī)范詳細說明

    C#的編碼規(guī)范詳細說明

    編碼規(guī)范是老生常談的問題,現(xiàn)在再看代碼規(guī)范可能不會再去在意變量,控件的命名方法等,而是更加關注代碼的實用性
    2013-08-08
  • 深入解析C#編程中泛型委托的使用

    深入解析C#編程中泛型委托的使用

    這篇文章主要介紹了C#編程中泛型委托的使用,引用泛型委托的代碼可以指定類型參數(shù)以創(chuàng)建已關閉的構造類型,需要的朋友可以參考下
    2016-02-02
  • C#數(shù)組學習相關資料整理

    C#數(shù)組學習相關資料整理

    最近開始學習c#,并有幸接觸到了數(shù)組方便的操作,感覺確實不錯,這里簡單的整理下c#相關的學習資料,方便大家學習
    2012-09-09
  • 如何使用C#實現(xiàn)將Excel文件轉換為HTML格式

    如何使用C#實現(xiàn)將Excel文件轉換為HTML格式

    在數(shù)據處理場景中,將 Excel 文件轉換為 HTML 格式是實現(xiàn)報表自動化、前端數(shù)據展示的重要環(huán)節(jié),下面我們就來看看如何使用Spire.XLS for .NET實現(xiàn) Excel 到 HTML 的精準轉換吧
    2025-10-10
  • C#實現(xiàn)Markdown內容轉為Word或PDF

    C#實現(xiàn)Markdown內容轉為Word或PDF

    Markdown作為一種輕量級的標記語言,因其簡潔易讀、語法清晰的特點被廣大程序員和技術文檔編寫者所青睞,本文主要介紹了如何使用C#實現(xiàn)Markdown內容轉為Word或PDF,需要的可以參考下
    2024-03-03
  • 日常收集C#接口知識(知識全面)

    日常收集C#接口知識(知識全面)

    本文分為七章節(jié)給大家介紹c#接口知識,內容比較詳細,特此分享腳本之家平臺,供大家參考
    2016-01-01
  • C#中File靜態(tài)類對文件的讀取寫入

    C#中File靜態(tài)類對文件的讀取寫入

    這篇文章介紹了C#中File靜態(tài)類對文件的讀取寫入,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • C#泛型類創(chuàng)建與使用的方法

    C#泛型類創(chuàng)建與使用的方法

    這篇文章主要為大家詳細介紹了C#泛型類創(chuàng)建與使用的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • WinForm單例窗體用法實例

    WinForm單例窗體用法實例

    這篇文章主要介紹了WinForm單例窗體,結合實例形式分析了窗體的單例模式定義、實現(xiàn)與使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2016-07-07
  • C# SkinEngine控件 給窗體添加皮膚的方法

    C# SkinEngine控件 給窗體添加皮膚的方法

    我在網上搜索過,給窗體使用皮膚的方法有很多,不過C#中這種方法最簡單。利用 IrisSkin2.dll 所提供的控件 SkinEngine 來為窗體添加皮膚。
    2013-04-04

最新評論

眉山市| 高碑店市| 南丰县| 铜川市| 南昌县| 台北市| 蓬安县| 磴口县| 仁布县| 达州市| 公安县| 宁国市| 保德县| 庄浪县| 合作市| 定南县| 柳林县| 米脂县| 荣成市| 蕉岭县| 常山县| 黄山市| 镇宁| 怀仁县| 绥宁县| 托克逊县| 宁化县| 慈利县| 勃利县| 昭平县| 涪陵区| 六枝特区| 耒阳市| 梅河口市| 津南区| 竹山县| 新龙县| 肃宁县| 辽中县| 都安| 那曲县|