博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【C#】利用Conditional属性完成编译忽略
阅读量:4085 次
发布时间:2019-05-25

本文共 1492 字,大约阅读时间需要 4 分钟。

Conditional是.NET提供关于编译的属性描述,其作用是添加到方法或属上,通过定义编译符的方式告指示编译器应忽略方法调用或属性

  • 在我们的代码中经常会出现Console.WriteLint(“XXX”);类似的这种只在DEBUG模式下才输出的测试语句,实际发布中并没有意义
    1. 这里可能有同学会问,Debug和Release模式在哪里看?
    2. 我使用的是MonoDevelop编译器,一般在编译器的左上角运行符号的右边可以选择当前的运行模式
    3. 比如说,我们写的代码在测试的时候都属于Debug模式,如果将代码打包发布之后,就属于Release模式,那时候在控制台的输出语句就毫无意义

我们要做的事:某些方法在测试的时候可以运行,可以在控制台输出,发布之后自动失效


  • 情况1:编译器模式为Debug
using System;// 1.需要引入该命名空间using System.Diagnostics;namespace Mars{    public class Person    {        // 2.作用是只有在Debug模式下才能编译Talk方法        [Conditional ("DEBUG")]        public void Talk ()        {            Console.WriteLine ("Talk方法成功调用");        }    }    class MainClass    {        public static void Main (string[] args)        {            Person XiaoMing = new Person ();            // 3.当前编译器为DEBUG模式,所以可以使用该方法            XiaoMing.Talk ();        }    }}
  • 输出结果:Talk方法成功调用
  • 结论:在编译器为Debug的模式下方法可以自动调用

  • 情况2:编译器模式为Release
using System;// 1.需要引入该命名空间using System.Diagnostics;namespace Mars{    public class Person    {        // 2.作用是只有在Debug模式下才能编译Talk方法        [Conditional ("DEBUG")]        public void Talk ()        {            Console.WriteLine ("Talk方法成功调用");        }    }    class MainClass    {        public static void Main (string[] args)        {            Person XiaoMing = new Person ();            // 3.当前编译器为DEBUG模式,所以可以使用该方法            XiaoMing.Talk ();// 注意:此处方法为灰色,无效状态        }    }}
  • 输出结果:控制台无输出
  • 结论:在编译器为Release模式时,被[Conditional (“DEBUG”)]修饰的方法调用无效(编译器不调用)

所以就不需要使用#if DEBUG #endif来进行复杂的判断了,也不需要发布的时候删除之前的代码(这可真的让人头大…)

转载地址:http://ibkii.baihongyu.com/

你可能感兴趣的文章
react 设置代理(proxy) 实现跨域请求
查看>>
通过试题理解JavaScript
查看>>
webpack的面试题总结
查看>>
实践这一次,彻底搞懂浏览器缓存机制
查看>>
Koa2教程(常用中间件篇)
查看>>
React Hooks 完全指南
查看>>
React16常用api解析以及原理剖析
查看>>
教你发布你npm包
查看>>
nvm 和 nrm 的安装与使用
查看>>
React Hooks 一步到位
查看>>
React Redux常见问题总结
查看>>
前端 DSL 实践指南
查看>>
ReactNative: 自定义ReactNative API组件
查看>>
cookie
查看>>
总结vue知识体系之实用技巧
查看>>
PM2 入门
查看>>
掌握 TS 这些工具类型,让你开发事半功倍
查看>>
前端如何搭建一个成熟的脚手架
查看>>
Flutter ListView如何添加HeaderView和FooterView
查看>>
Flutter key
查看>>