C# Obsolete、Contional等等一些特性的介绍

本文详细介绍了C#中的一些高级Attribute特性,包括Obsolete标记过时函数,Conditional条件编译,CallXXXX调试辅助,DebuggerStepThrough调试行为,枚举中文Description以及自定义特性。这些特性在特定场景下能提高代码的可读性和维护性,尤其是在接口更新、调试和权限校验等方面。
摘要由CSDN通过智能技术生成

本文分享一些代码使用Attribute的高级写法部分,日常使用中应该很少用到。

这些东西其实和xml解析时定义的class中做的标记、自定义配置文件的class标记、枚举中文标记等等是类似的。都是在上面“[]”+标记。

日常编码中,应该Enum的中文标记是使用最多的,接下来就是xml解析(但是现在绝大部分使用json就行,比xml简单好用很多),自定义配置文件应该用的人比较少,毕竟实用性不大,直接定义字段,或者使用系统自带的要容易用一些。接下来分享的几个,应该极少人会使用。

一.Obsolete

    类似tooltip提示,一般写接口的人会用到,用于标记函数是否过时,以及强制让函数无法通过编译。

    截图中的三个方法是一样的,调用输出信息。照理说,是能直接调用然后输出的,毕竟没有语法错误,编译器也没提示函数有问题。

    但实际使用时是:一个警告,一个直接错误

     直接给你一个error,不让编译通过。

      查看定义,该属性是继承Attribute,这样用法就是直接标在函数或者成员上面,并用“[]”包起来。该特性有三种构造函数,第二种常用,就是让函数提示过时,同时里面有message提示信息。用法就是上面第一张图那样,让函数本身“过时”,给了一个警告提,同时鼠标移上去时,会提示message的信息。第三种构造函数,就是加了error,标记是现实成“警告”(可以编译通过),还是“错误”(无法编译通过)。

      这个特性,一般写接口的人会使用到,在接口的版本更新后,如果替换了新接口,但是又想老程序能使用时,一般保留老接口的代码。不过这里就有问题了,接下来新使用的程序,应该让他们用新接口而不是用老接口:如果说写在文档里面说明这个情况,但是好多人是连接口文档都不看的,直接dll引用就开始写代码的;如果写在注释里面?那更加不行,一般没报错,是很少有人去看注释的。所以这时候就得用特性了,使用这个特性,写代码的时候就直接编译器提示了,使用者全部都会看到这个提示。(unity经常用这个特性提示每次更新版本后丢弃的老属性,不过现在国内绝大部分公司,都是直接删掉老函数,然后拉分支来处理的,这样导致后期一大堆分支,维护很麻烦)

 

二.Conditional

      一个好玩的特性,类似于 #if XXXX  #elif  XXXX #else XXX #endif 这种使用:

      使用方式如下:

      调用时:发现明明代码写在那里,但是却不执行

      因为它的使用前提是你要提示它“要执行”,它才会执行,不然没提示,代码在,但是不执行。

怎么提示:

方法一:在开头写#define +构造函数中传递的字符串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值