C#預(yù)處理器指令的用法實(shí)例分析
本文實(shí)例講述了C#預(yù)處理器指令的用法。分享給大家供大家參考。具體用法分析如下:
C#預(yù)處理器指令是在編譯時(shí)調(diào)用的。預(yù)處理器指令(preprocessor directive)告訴C#編譯器要編譯哪些代碼,并指出如何處理特定的錯(cuò)誤和警告。C#預(yù)處理器指令還可以告訴C#編輯器有關(guān)代碼組織的信息。
1. 定義符號(hào)和取消符號(hào)定義的預(yù)處理指令#define 和 #undef
預(yù)處理指令都以#號(hào)開頭并位于行首前面可以出現(xiàn)空格符。
#define ISSAY
上面的語(yǔ)句定義了連個(gè)個(gè)預(yù)編譯的符號(hào),他的作用域是他所處整個(gè)文件,定義符號(hào)的語(yǔ)句必須出現(xiàn)在所有代碼之前, 否則編譯的時(shí)候會(huì)出現(xiàn)一個(gè)異常: 不能在文件的第一個(gè)標(biāo)記之后,定義或取消定義預(yù)處理器符號(hào) 。我們也可以使用#undef來(lái)取消一個(gè)符號(hào)的定義,先來(lái)看個(gè)例子。
#undef DEBUG
#define ISSAY
using System;
namespace JustDoIt
{
class Program
{
static void Main(string[] args)
{
#if DEBUG
Console.Write("debug.");
#endif
#if ISSAY
Console.Write("hello.");
#else
Console.Write("you can say nothing.");
#endif
Console.ReadLine();
}
}
}
//輸出:hello
從上面的代碼我們可以看到第一樣等一了符號(hào)DEEBU,緊接著第二行取消了這個(gè)符號(hào)的定義,也就是相當(dāng)于沒有定義一樣,所以程序運(yùn)行的時(shí)候不會(huì)執(zhí)行Console.Write("debug.")這個(gè)語(yǔ)句。第三行定義了ISSAY符號(hào),所以程序輸出了“hello”,如果我們把他注釋了或者是刪除了,那么程序會(huì)輸出“you can say nothing“。我們可以初步看到通過(guò)定義預(yù)編譯的符號(hào),可以控制編譯器選擇性地編譯代碼。上面的代碼中還有#if和#endif這樣的符號(hào),這些是條件編譯指令。
2. 條件編譯指令
條件編譯指令有4個(gè),除了我們從第一個(gè)示例看到的#if、#else、#endif之外,還有一個(gè)#elif。我們對(duì)這些指令應(yīng)該有是曾相識(shí)的感覺,他們跟我們平時(shí)編寫代碼的時(shí)候試用的條件語(yǔ)句是一樣的,條件語(yǔ)句是用來(lái)控制程序流的,而這些條件編譯指令是用來(lái)控制編譯器選擇性地編譯代碼的。
一條#if語(yǔ)句可以有0條或多條#elif語(yǔ)句,也可以有0條或一條#else 語(yǔ)句,但必須包括一條#endif語(yǔ)句必須有,否則會(huì)出現(xiàn)語(yǔ)法錯(cuò)誤。
3. #region和#endregion
這兩個(gè)符號(hào)平時(shí)我們肯定用的很多了,就是把一些相關(guān)的代碼折疊到一起,這樣對(duì)我們?cè)谝粋€(gè)文件中編寫較長(zhǎng)的代碼非常有用,我們可以把一組相關(guān)的代碼用#region和#endregion組織在一起并且可以在#region后面加上說(shuō)明的文字,當(dāng)這組代碼被折疊起來(lái)的時(shí)候,我們可以看到#region后面的說(shuō)明文字。
希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
相關(guān)文章
winform使用委托和事件來(lái)完成兩個(gè)窗體之間通信的實(shí)例
這篇文章介紹了winform使用委托和事件來(lái)完成兩個(gè)窗體之間通信的實(shí)例,有需要的朋友可以參考一下2013-09-09c#關(guān)于非托管內(nèi)存的釋放問(wèn)題及解讀
這篇文章主要介紹了c#關(guān)于非托管內(nèi)存的釋放問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02C#中委托和事件在觀察者模式中的應(yīng)用實(shí)例
這篇文章主要介紹了C#中委托和事件在觀察者模式中的應(yīng)用,需要的朋友可以參考下2014-08-08Unity的IPreprocessBuild實(shí)用案例深入解析
這篇文章主要為大家介紹了Unity的IPreprocessBuild實(shí)用案例深入解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05C#實(shí)現(xiàn)從多列的DataTable里取需要的幾列
這篇文章主要介紹了C#實(shí)現(xiàn)從多列的DataTable里取需要的幾列,涉及C#針對(duì)DataTable操作的相關(guān)技巧,需要的朋友可以參考下2016-03-03Unity3D網(wǎng)格功能生成球體網(wǎng)格模型
這篇文章主要為大家詳細(xì)介紹了Unity3D網(wǎng)格功能生成球體網(wǎng)格模型,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02