c#中预处理指令来实现条件编译
2015-08-27 14:01
337 查看
C#预处理器指令是在编译时调用的。预处理器指令(preprocessor directive)告诉C#编译器要编译哪些代码,并指出如何处理特定的错误和警告。C#预处理器指令还可以告诉C#编辑器有关代码组织的信息。
1. 定义符号和取消符号定义的预处理指令#define 和 #undef
预处理指令都以#号开头并位于行首前面可以出现空格符。
#define
DEBUG
#define
ISSAY
上面的语句定义了连个个预编译的符号,他的作用域是他所处整个文件,定义符号的语句必须出现在所有代码之前, 否则编译的时候会出现一个异常: 不能在文件的第一个标记之后,定义或取消定义预处理器符号 。我们也可以使用#undef来取消一个符号的定义,先来看个例子。
#define
DEBUG
#undef
DEBUG
#define
ISSAY
using System;
namespace JustDoIt
{
class Program
{
static void Main(string[]
args)
{
#if DEBUG
Console.Write("debug.");
#endif
#if ISSAY
Console.Write("hello.");
#else
Console.Write("you
can say nothing.");
#endif
Console.ReadLine();
}
}
}
//输出:hello
从上面的代码我们可以看到第一样等一了符号DEEBU,紧接着第二行取消了这个符号的定义,也就是相当于没有定义一样,所以程序运行的时候不会执行Console.Write("debug.")这个语句。第三行定义了ISSAY符号,所以程序输出了“hello”,如果我们把他注释了或者是删除了,那么程序会输出“you can say nothing“。我们可以初步看到通过定义预编译的符号,可以控制编译器选择性地编译代码。上面的代码中还有#if和#endif这样的符号,这些是条件编译指令。
2. 条件编译指令
条件编译指令有4个,除了我们从第一个示例看到的#if、#else、#endif之外,还有一个#elif。我们对这些指令应该有是曾相识的感觉,他们跟我们平时编写代码的时候试用的条件语句是一样的,条件语句是用来控制程序流的,而这些条件编译指令是用来控制编译器选择性地编译代码的。
一条#if语句可以有0条或多条#elif语句,也可以有0条或一条#else 语句,但必须包括一条#endif语句必须有,否则会出现语法错误。
3. #region和#endregion
这两个符号平时我们肯定用的很多了,就是把一些相关的代码折叠到一起,这样对我们在一个文件中编写较长的代码非常有用,我们可以把一组相关的代码用#region和#endregion组织在一起并且可以在#region后面加上说明的文字,当这组代码被折叠起来的时候,我们可以看到#region后面的说明文字。
引用网址:http://www.laoney.net/post/2009/03/10/200903102330237455.aspx
1. 定义符号和取消符号定义的预处理指令#define 和 #undef
预处理指令都以#号开头并位于行首前面可以出现空格符。
#define
DEBUG
#define
ISSAY
上面的语句定义了连个个预编译的符号,他的作用域是他所处整个文件,定义符号的语句必须出现在所有代码之前, 否则编译的时候会出现一个异常: 不能在文件的第一个标记之后,定义或取消定义预处理器符号 。我们也可以使用#undef来取消一个符号的定义,先来看个例子。
#define
DEBUG
#undef
DEBUG
#define
ISSAY
using System;
namespace JustDoIt
{
class Program
{
static void Main(string[]
args)
{
#if DEBUG
Console.Write("debug.");
#endif
#if ISSAY
Console.Write("hello.");
#else
Console.Write("you
can say nothing.");
#endif
Console.ReadLine();
}
}
}
//输出:hello
从上面的代码我们可以看到第一样等一了符号DEEBU,紧接着第二行取消了这个符号的定义,也就是相当于没有定义一样,所以程序运行的时候不会执行Console.Write("debug.")这个语句。第三行定义了ISSAY符号,所以程序输出了“hello”,如果我们把他注释了或者是删除了,那么程序会输出“you can say nothing“。我们可以初步看到通过定义预编译的符号,可以控制编译器选择性地编译代码。上面的代码中还有#if和#endif这样的符号,这些是条件编译指令。
2. 条件编译指令
条件编译指令有4个,除了我们从第一个示例看到的#if、#else、#endif之外,还有一个#elif。我们对这些指令应该有是曾相识的感觉,他们跟我们平时编写代码的时候试用的条件语句是一样的,条件语句是用来控制程序流的,而这些条件编译指令是用来控制编译器选择性地编译代码的。
一条#if语句可以有0条或多条#elif语句,也可以有0条或一条#else 语句,但必须包括一条#endif语句必须有,否则会出现语法错误。
3. #region和#endregion
这两个符号平时我们肯定用的很多了,就是把一些相关的代码折叠到一起,这样对我们在一个文件中编写较长的代码非常有用,我们可以把一组相关的代码用#region和#endregion组织在一起并且可以在#region后面加上说明的文字,当这组代码被折叠起来的时候,我们可以看到#region后面的说明文字。
引用网址:http://www.laoney.net/post/2009/03/10/200903102330237455.aspx
相关文章推荐
- C# 单例3种写法
- c#中各种进制之间转换
- 【c#】关于终止以及删除主进程创建的线程以及进程的方法
- c#中ToString()格式化数据
- C#编程获取资源文件中图片的方法
- C#动态创建button的方法
- c# 服务程序重启自身
- C# PPT 为形状设置三维效果
- C#中图片与BASE64码互相转换
- C#动态调用WCF接口
- c# 右下角弹窗提示
- C#生成音频文件以及转换成需要的格式
- C# PPT 为形状设置三维效果
- C#通过反射获取上层调用方法信息
- C# TreeView+checkBox 自动加载
- c# winform datagridview 编辑单元格内容,没有保存编辑内容
- C# WPF回显
- C#:序列化值与解码二进制
- C# Dev控件中的 PropertyGridControl 属性控件的基本用法以及排序
- C# 获取指定目录下所有文件信息、删除文件、目录,移动目录,拷贝目录