参考文章
本篇主要学习预处理命令
(一)基本知识 (1)定义符号和取消符号定义的预处理指令#define 和 #undef (2)条件编译指令#if、#else、#endif之外,还有一个#elif.必须包括一条#endif语句 (3)#region和#endregion 用于代码折叠,这个经常用 (4)#warning、#error用于编译项目的时候有时就会看到错误列表窗口里列出出现的错误、警告或者消息的信息。 (5)#line(二)代码演示
//#define DEBUG//#undef DEBUG//#define ISSAY#define LEVEL1using 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",你也可以通过不选中这两个条件编译符号