​本篇主要学习预处理命令

     (一)基本知识

        (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",你也可以通过不选中这两个条件编译符号

C#中的预处理命令_#define