C#.NET學(xué)習(xí)筆記5 C#中的條件編譯
更新時(shí)間:2012年11月01日 21:41:40 作者:
條件編譯是C#比Java多出的東西,但我跟前輩請(qǐng)教后,他們都說(shuō)條件編譯在實(shí)際的項(xiàng)目開(kāi)發(fā)中不怎么使用.鑒于是新內(nèi)容,我還是做做筆記,理解一下好了
條件編譯是C#比Java多出的東西,但我跟前輩請(qǐng)教后,他們都說(shuō)條件編譯在實(shí)際的項(xiàng)目開(kāi)發(fā)中不怎么使用.鑒于是新內(nèi)容,我還是做做筆記,理解一下好了.
條件編譯屬于編譯預(yù)處理的范疇,它能讓我們通過(guò)條件編譯的機(jī)制,將部分代碼包括進(jìn)來(lái)或者排除出去,其作用與if-else類似.
條件編譯指令有以下四種 #if #elif #else #endif 條件編譯指令有以下四種
#if
#elif
#else
#endif
下面我們通一些例子來(lái)說(shuō)明它們的用法
#define Debug
class Class1
{
#if Debug
void Trace(string s) {}
#endif
}
執(zhí)行時(shí)由于第一行已經(jīng)使用#define 指令定義了符號(hào)Debug, #if 的條件滿足,所以這段代碼等同于
class Class1
{
void Trace(string s) {}
}
再比如:
#define A
#define B
#undef C
class D
{
#if C
void F() {}
#elif A && B
void I() {}
#else
void G() {}
#endif
}
其編譯效果等同于:
class C
{
void I() {}
}
#if 指令可以嵌套使用, 例如:
#define Debug // Debugging on
#undef Trace // Tracing off
class PurchaseTransaction
{
void Commit()
{
#if Debug
CheckConsistency();
#if Trace
WriteToLog(this.ToString());
#endif
#endif
CommitHelper();
}
}
預(yù)編譯和條件編譯指令還可以幫助我們?cè)诔绦驁?zhí)行過(guò)程中發(fā)出編譯的錯(cuò)誤或警告,相應(yīng)的指令是#warning 和#error,下面的程序展示了它們的用法:
#define DEBUG
#define RELEASE
#define DEMO VERSION
#if DEMO VERSION && !DEBUG
#warning you are building a demo version
#endif
#if DEBUG && DEMO VERSION
#error you cannot build a debug demo version
#endif
using System;
class Demo
{
public static void Main()
{
Console.WriteLine(“Demo application”);
}
}
作者:notifier
條件編譯屬于編譯預(yù)處理的范疇,它能讓我們通過(guò)條件編譯的機(jī)制,將部分代碼包括進(jìn)來(lái)或者排除出去,其作用與if-else類似.
條件編譯指令有以下四種 #if #elif #else #endif 條件編譯指令有以下四種
#if
#elif
#else
#endif
下面我們通一些例子來(lái)說(shuō)明它們的用法
復(fù)制代碼 代碼如下:
#define Debug
class Class1
{
#if Debug
void Trace(string s) {}
#endif
}
執(zhí)行時(shí)由于第一行已經(jīng)使用#define 指令定義了符號(hào)Debug, #if 的條件滿足,所以這段代碼等同于
復(fù)制代碼 代碼如下:
class Class1
{
void Trace(string s) {}
}
再比如:
復(fù)制代碼 代碼如下:
#define A
#define B
#undef C
class D
{
#if C
void F() {}
#elif A && B
void I() {}
#else
void G() {}
#endif
}
其編譯效果等同于:
復(fù)制代碼 代碼如下:
class C
{
void I() {}
}
#if 指令可以嵌套使用, 例如:
復(fù)制代碼 代碼如下:
#define Debug // Debugging on
#undef Trace // Tracing off
class PurchaseTransaction
{
void Commit()
{
#if Debug
CheckConsistency();
#if Trace
WriteToLog(this.ToString());
#endif
#endif
CommitHelper();
}
}
預(yù)編譯和條件編譯指令還可以幫助我們?cè)诔绦驁?zhí)行過(guò)程中發(fā)出編譯的錯(cuò)誤或警告,相應(yīng)的指令是#warning 和#error,下面的程序展示了它們的用法:
復(fù)制代碼 代碼如下:
#define DEBUG
#define RELEASE
#define DEMO VERSION
#if DEMO VERSION && !DEBUG
#warning you are building a demo version
#endif
#if DEBUG && DEMO VERSION
#error you cannot build a debug demo version
#endif
using System;
class Demo
{
public static void Main()
{
Console.WriteLine(“Demo application”);
}
}
作者:notifier
相關(guān)文章
一種c#深拷貝方式完勝java深拷貝(實(shí)現(xiàn)上的對(duì)比分析)
下面小編就為大家?guī)?lái)一篇一種c#深拷貝方式完勝java深拷貝(實(shí)現(xiàn)上的對(duì)比分析)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-07-07C#序列化與反序列化集合對(duì)象并進(jìn)行版本控制
這篇文章介紹了C#序列化與反序列化集合對(duì)象并實(shí)現(xiàn)版本控制的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09C#語(yǔ)言基礎(chǔ)——結(jié)構(gòu)體和枚舉類型全面解析
下面小編就為大家?guī)?lái)一篇C#語(yǔ)言基礎(chǔ)——結(jié)構(gòu)體和枚舉類型全面解析。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-07-07WPF使用WrapPanel實(shí)現(xiàn)虛擬化效果
這篇文章主要為大家詳細(xì)介紹了如何利用WPF WrapPanel實(shí)現(xiàn)虛擬化效果,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)或工作有一定幫助,感興趣的小伙伴可以了解一下2022-09-09C#郵件定時(shí)群發(fā)工具Atilia用法實(shí)例
這篇文章主要介紹了C#郵件定時(shí)群發(fā)工具Atilia用法,較為詳細(xì)的分析了Atilia實(shí)現(xiàn)郵件定時(shí)群發(fā)功能的原理與實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08