#if 以及 #else、#elif、#endif、#define 和 #undef 指令,允许基于是否存在一个或多个符号包括或排除代码。 这在编译调试版本的代码或编译特定配置的代码时会很有用,有兴趣的可以直接到C#指南查看。
以 #if 指令开头的条件指令必须以 #endif 指令显式终止。
#define 允许你定义一个符号。 然后通过将该符号用作传递给 #if 指令的表达式,该表达式的计算结果为 true。
还可以通过 -define 编译器选项来定义符号。 可以通过 #undef 取消定义符号。
使用 -define 或 #define 定义的符号与具有相同名称的变量不冲突。 也就是说,变量名称不应传递给预处理器指令,且符号仅能由预处理器指令评估。
使用 #define 创建的符号的作用域是在其中定义它的文件。
此外,生成系统还会感知表示不同目标框架的预定义预处理器符号。 在创建可以面向多个.NET 实现或版本的应用程序时,这些符号会很有用。
举个例子:
输出的结果是
下例是官方例子显示如何针对不同的目标框架进行测试,以便在可能时使用较新的 API: