参考文章http://hahha2003.blog.163.com/blog/static/248577920114204133758/
本篇主要学习预处理命令
(一)基本知识
(1)定义符号和取消符号定义的预处理指令#define 和 #undef
(2)条件编译指令#if、#else、#endif之外,还有一个#elif.必须包括一条#endif语句
(3)#region和#endregion 用于代码折叠,这个经常用
(4)#warning、#error用于编译项目的时候有时就会看到错误列表窗口里列出出现的错误、警告或者消息的信息。
(5)#line
(二)代码演示
//#define DEBUG //#undef DEBUG //#define ISSAY #define LEVEL1 using System; using System.Collections.Generic; using System.Linq; using System.Text; //本篇主要学习预处理命令 //(一)基本知识 //(1)定义符号和取消符号定义的预处理指令#define 和 #undef //(2)条件编译指令#if、#else、#endif之外,还有一个#elif.必须包括一条#endif语句 //(3)#region和#endregion 用于代码折叠,这个经常用 //(4)#warning、#error用于编译项目的时候有时就会看到错误列表窗口里列出出现的错误、警告或者消息的信息。 //(5)#line ////(二)说明 //(1)条件编译的条件除了用#define在代码的最前端定义外,还可以在VS右键项目属性|生成|常规|条件编译符号 // 中输入自己的定义的条件编译符号 //(2)VS默认会定义两个条件编译变量"DEBUG","TRACE",你也可以通过不选中这两个条件编译符号 namespace ComditionDebugDemo { class Program { static void Main(string[] args) { //GetLevel(); DebugTest(); Console.ReadKey(); } //用于版本控制编译.现在做项目时有些时候我们各版本之间相差不大 //Level1版本可能是Level2版本上隐藏一部分功能,那么用条件编译编译不同的版本发布是一种不错的选择 //该列简单模拟了这方面的作用 private static void GetLevel() { string str = string.Empty; string a="a"; string b="b"; string c="c"; #if LEVEL1 str = a; Console.WriteLine("Level1版本str是{0}",str); #elif LEVEL2 str=a+c; Console.WriteLine("Level2版本str是{0}",str); #elif LEVEL3 str =a+b+c; Console.WriteLine("Level3版本str是{0}",str); #endif } //预处理命令还可以用于在调试的时候根据条件选择性调试代码块 //#error,#warning可以 //下面的列子演练这一点 private static void DebugTest() { #if DEBUG Console.WriteLine("debug"); #else Console.WriteLine("release"); #endif #if ISSAY Console.WriteLine("hello"); #else Console.WriteLine("you can say nothing."); #endif #if TRACE Console.WriteLine("trace"); #warning "这里有警告" //#error "这里有错误" #endif } } }
(三)补充说明
(1)条件编译的条件除了用#define在代码的最前端定义外,还可以在VS右键项目属性|生成|常规|条件编译符号
中输入自己的定义的条件编译符号
(2)VS默认会定义两个条件编译变量"DEBUG","TRACE",你也可以通过不选中这两个条件编译符号