码迷,mamicode.com
首页 > Windows程序 > 详细

C# 预处理指令

时间:2018-10-02 20:15:29      阅读:303      评论:0      收藏:0      [点我收藏+]

标签:microsoft   不能   bug   传递   trace   static   public   cti   应用   

C# 预处理指令

  • #if...else
  • #define...undef
  • #warning
  • #error
  • #pragma
  • #pragma checksum
#define MYTEST
using System;
public class MyClass
{
    static void 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 NET20NET35NET40NET45NET451NET452NET46NET461NET462NET47NET471NET472
.NET Standard NETSTANDARD1_0NETSTANDARD1_1NETSTANDARD1_2NETSTANDARD1_3NETSTANDARD1_4NETSTANDARD1_5NETSTANDARD1_6NETSTANDARD2_0
.NET Core NETCOREAPP1_0NETCOREAPP1_1NETCOREAPP2_0NETCOREAPP2_1

其他预定义符号包括 DEBUG 和 TRACE 常量。 你可以使用 #define 替代项目的值集。 例如,会根据生成配置属性(“调试”或者“发布”模式)自动设置 DEBUG 符号。

public class MyClass
{
    static void Main()
    {
#if NET40
        WebClient _client = new WebClient();
#else
        HttpClient _client = new HttpClient();
#endif
    }
    //...
}

 

C# 预处理指令

标签:microsoft   不能   bug   传递   trace   static   public   cti   应用   

原文地址:https://www.cnblogs.com/brt3/p/9737558.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!