预处理是在编译之前进行的处理,C# 预处理主要是预处理器指令用于在条件编译中起作用。与 C 和 C++ 不同的是,它们不是用来创建宏。一个预处理器指令必须是该行上的唯一指令。

1、预处理指令

预处理指令是以#号开头的代码行,号必须是该行除了任何空白字符外的第一个字符。# 后是指令关键字,在关键字和 # 号之间允许存在任意个数的空白字符,整行语句构成了一条预处理指令,该指令将在编译器进行编译之前对源代码做某些转换。

预处理器指令

描述

#define

它用于定义一系列成为符号的字符。

#undef

它用于取消定义符号。

#if

它用于测试符号是否为真。

#else

它用于创建复合条件指令,与 #if 一起使用。

#elif

它用于创建复合条件指令。

#endif

指定一个条件指令的结束。

#line

它可以让您修改编译器的行数以及(可选地)

输出错误和警告的文件名。

#error

它允许从代码的指定位置生成一个错误。

#warning

它允许从代码的指定位置生成一级警告。

#region

它可以让您在使用 Visual Studio Code Editor 的大纲特性时,

指定一个可展开或折叠的代码块。

#endregion

它标识着 #region 块的结束。

2、#define 预处理器和条件指令

#define 预处理器指令创建符号常量。

#define 允许您定义一个符号,这样,通过使用符号作为传递给 #if 指令的表达式,表达式将返回 true

语法:

#define symbol

可以使用 #if 指令来创建一个条件指令。条件指令用于测试符号是否为真。如果为真,编译器会执行 #if 和下一个指令之间的代码。也可以使用== (等于)、!= (不等于)、&& (与)、|| (或)运算符。

例如,

#define DEBUG
#define RELEASE
using System;
namespace cjavapy
{
   class Program
   {
      static void Main(string[] args)
      {
         #if (DEBUG&&!RELEASE)
            Console.WriteLine("开发环境");
         #else
            Console.WriteLine("生产环境");
         #endif
         Console.ReadKey();
      }
   }
}

注意:一个以 #if 指令开始的条件指令,必须显示地以一个 #endif 指令终止。

推荐文档