C#并没有一个像C++那样的独立预处理器,所谓的预处理器指令实际上是由编译器处理的。
#define 和 #undef
#define 的用法如下所示:#define DEBUG
#undef 正好相反—— 它删除符号的定义:#undef DEBUG
#if、#elif、#else 和#endif
当编译器遇到#if 语句后,将先检查相关的符号是否存在,如果符号存在,就编译#if 子句中的代码
否则,编译器会忽略所有的代码,直到遇到匹配的#endif 指令为止
一般是在调试时定义符号DEBUG,把与调试相关的代码放在#if 子句中。在完成了调试后,就把#define 语句注释掉,所有的调试代码会奇迹般地消失,可执行文件也会变小,最终用户不会被这些调试信息弄糊涂(显然,要做更多的测试,确保代码在没有定义DEBUG 的情况下也能工作
#warning 和 #error
当编译器遇到它们时,会分别产生警告或错误。
#region 和#endregion
用于把一段代码标记为有给定名称的一个块
#line
改变编译器在警告和错误信息中显示的文件名和行号信息
#pragma
可以抑制或还原指定的编译警告
网友评论