C# 预处理指令
- #if...else
- #define...undef
- #warning
- #error
- #pragma
- #pragma checksum
#define MYTEST
using System;
publicclass MyClass
{
staticvoid Main()
{
#if (DEBUG && !MYTEST)
Console.WriteLine("DEBUG is defined");
#elif (!DEBUG && MYTEST)
Console.WriteLine("MYTEST is defined");
#elif (DEBUG && MYTEST)
Console.WriteLine("DEBUG and MYTEST are defined");
#else
Console.WriteLine("DEBUG and MYTEST are not defined");
#endif
}
}
#define 允许你定义一个符号,但不能向符号分配值。 然后通过将该符号用作传递给 #if 指令的表达式,该表达式的计算结果为 true。
还可以通过 -define 编译器选项来定义符号。 可以通过 #undef 取消定义符号。
使用 #define 创建的符号的作用域是在其中定义它的文件。
预定义符号
生成系统还会感知表示不同目标框架的预定义预处理器符号。 在创建可以面向多个.NET 实现或版本的应用程序时,这些符号会很有用。
| 目标框架 | 符号 |
|---|---|
| .NET Framework |
NET20, NET35, NET40, NET45, NET451, NET452, NET46, NET461, NET462, NET47, NET471, NET472
|
| .NET Standard |
NETSTANDARD1_0, NETSTANDARD1_1, NETSTANDARD1_2, NETSTANDARD1_3, NETSTANDARD1_4, NETSTANDARD1_5, NETSTANDARD1_6, NETSTANDARD2_0
|
| .NET Core |
NETCOREAPP1_0, NETCOREAPP1_1, NETCOREAPP2_0, NETCOREAPP2_1
|
其他预定义符号包括 DEBUG 和 TRACE 常量。 你可以使用 #define 替代项目的值集。 例如,会根据生成配置属性(“调试”或者“发布”模式)自动设置 DEBUG 符号。
public
class
MyClass
{
static
void
Main()
{
#if NET40
WebClient _client = new WebClient();
#else
HttpClient _client = new HttpClient();
#endif
}
//...
}
原文:https://www.cnblogs.com/brt3/p/9737558.html
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!