c#有许多预处理指令,都 以“#”开头。这些命令不会编译为可执行代码中的命令,但会影响编译过程。因为它们都是在编译时被调用的。
1.#define和#undef
#define可以建立一个预定义符号,当将符号用作传递给#if指令的表达式时,此表达式的计算结果为true.#undef用于删除一个预定义符号。
2.#if,#elif,#else,#endif
#if是一个条件指令,用于测试一个或者多个符号以查看它们的计算结果是不是为true。如果为true,则编译器会计算位于#if和#endif指令之间的所有代码
#elif允许创建复合条件指令。如果前面的#if和任何#elif指令表达式的计算结果都不是true时,则计算#elif表达式。如果#elif为true,编译器将计算位于#elif和下一个条件指令之间的所有代码
#else也允许创建复合条件指令。
例:
#define de1
#define de2
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
#if(de1&&!de2)
Console.WriteLine("de1 is defined");
#elif(!de1&&de2)
Console.WriteLine("de2 is defined");
#elif(de1&&de2)
Console.WriteLine("de1 de2 are defined");
#else
Console.WriteLine("de1 de2 are not defined");
#endif
Console.ReadKey();
}
}
}
3.#warning和#error
在程序编译过程中,当编译器遇到#warning或者#error指令时,会分别产生警告或者错误信息。若遇到#warning指令,编译器会向用户显示其后面的文本。然后继续编译。若遇到#error指令,编译器就会给用户显示后面的文本,作为一个编译错误信息。然后立即退出编译。
4.#region和#endregion
这两个指令用于把一段代码标记为有制定名称的一个块
|