目录
1.#define和#undef
2.#if、#elif、#else、#endif
3.#warning、#error
4.#region、#endregion
5.#line
6.#pragma
1.#define和#undef
使用之前应该放在源代码之前,即程序集引用的上方
#define DEBUG //定义了debug这个符号,但是没有具体的值,可以将它看成一个符号而已。
//#define单独使用没有什么意义,一般是和#if结合使用
#undef DEBUG //删除这个符号的定义
示例:
#define DEBUG
int DoSw(double x)
{
#if DEBUG
COnsole.WriteLine("x is"+X);
#edif
}
2.#if、#elif、#else、#endif
//#define DebugA
#define DebugB
using System;
namespace MyApplication
{
class Program
{
static void Main(string[] args)
{
#if DebugA
Console.WriteLine("Hello DebugA");
#elif DebugB
Console.WriteLine("Hello DebugB");
#else
Console.WriteLine("Hello Debugelse");
#endif
}
}
}

#elif(=else if)和#else指令可以用在#if中,和C#中的if,else if,else含义相同。
#if和#elif支持一组逻辑运算符"!","==","!=“和”||",如果符号存在,则为true。
#if DebugB && DebugA //当Debug与DebugA同时存在才会执行
3.#warning、#error
当编译器遇到这两条指令是,会分别产生警告和错误。
编译器遇到 #warning,显示指令后的文本,之后继续编译
编译器遇到 #error,显示指令后的文本,并立即退出编译,不会产生IL代码。
static void Main(string[] args)
{
#warning "All Right?"
Console.WriteLine("Contine...");
//#error "All Right?"
// Console.WriteLine("Contine...");
}

下图为放开error注释

4.#region、#endregion
作用:代码缩进和指定该代码块的名称,使得代码可以更好的布局。
5.#line
这条命令很少使用,作用:更改代码行号。
6.#pragma
#pragma:为编译器提供特殊的指令,说明如何编译包含杂注的文件。
#pragma warning:可启用或禁用某些警告。
#pragma checksum:生成源文件的校验和,以帮助调试ASP.NET页。
可以抑制或恢复指定的编译警告。与命令行选项不同,#pragma指令可以在类和方法上执行,对抑制什么警告和抑制的时间进行更精细的控制。
本文深入探讨C#预处理器指令的使用,包括#define、#undef、#if、#elif、#else、#endif、#warning、#error、#region、#endregion、#line和#pragma等,讲解其在代码条件编译、警告与错误处理、代码组织及编译器特殊指令的应用。
2087

被折叠的 条评论
为什么被折叠?



