一、使用原因及目的:1、部分编译(或者称为条件编译)
使用预处理指令可以禁止编译器编译代码的某一部分。
2、调试信息
二、预处理指令的影响:C#预处理指令从来 不会转化为可执行代码中的命令,但会影响编译器的各个方面。
三、预处理指令的使用
1、预处理指令以符号#开头(不用分号结束,一般一行只有一条命令)
2、预处理指令的用法:
#define 告诉编译器存在指定名称的符号。☆☆☆
如:#define Demo
#undef 删除符号的定义
如:#undef Demo
#if、#elif(=else if)、#else、#endif 告诉编译器是否需要编译某个代码块 ☆☆☆
譬如你想在调试的时候走一些特定的数据,就可以用这些编译属性。
如:#if Demo
Do Something
#endif
其中Demo来源于上文#define定义的符号,只有当Demo这个符号被定义了才会走#if这部分语句。
如果定义多个符号就可以使用#elif语句
如:#define Demo
#define Demo1
#define Demo2
#if Demo
DoSomething
#if Demo1==true
DoSomething1
#endif
#elif Demo2
DoSomething2
#endif
是不是觉得和if...else语句块很像?上文有个#if Demo1==true,相当于判断Demo1这个符号是否被#define定义,如果被定义值为true否则false。
#warning、#error 提示警告和错误信息 ☆☆☆
如果编译器遇到#warning指令就会显示#warning指令后面的文本,之后编译继续进行。
如果编译器遇到#error指令就会显示后面的文本作为编译错误消息,然后立即退出编译。
注:#warning很有用啊,有时候调试代码你会给某个变量赋一个定值(更推荐使用VS的immediate Window),这时候你放一个#warning在那里,就不会在代码提交的时候忘记注释。
#region、#endregion 用于把一段代码标记为有指定名称的代码块,主要为了布局。当某个类代码量很大的时候一般情况下使用这个都把代码折叠起来。☆☆☆☆
如:#region This Method Do Something
//Method
#endregion
#line用于改变编译器在警告和错误信息中显示的文件名和行号信息 ☆
#pragma 用于抑制或还原指定的编译警告(不建议使用) ☆
譬如使用Page.RegisterStartupScript方法注册JS方法到页面会提示方法已过时的警告信息,就可以使用这条指令不显示这条警告
#pragma warning disable 169(警告信息的编号)