博客
关于我
C# 特性 简而易懂的笔记
阅读量:520 次
发布时间:2019-03-07

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

虽然菜鸟教程的内容比较基础,但通过自己的学习和探索,逐渐对C#的特性有了一定的理解。今天决定系统地整理一下C#中的三个主要特性:Obsolete、Conditional和AttributeUsage。这些特性在软件开发中非常有用,可以帮助开发者在不同场景下更方便地管理代码。


1. Obsolete 特性

Obsolete 特性主要用于标识某些已经过时或不再支持的方法、类或代码部分。这种特性在维护大的项目时非常有用,可以让已经移除的代码部分仍然存在,但不会影响到新开发人员。它支持两个参数,分别是默认参数和布尔参数。

  • 单参数:

    使用时只需在方法或类上标注[Obsolete("此类已经过期啦!")],默认第二个参数为false,这表示虽然警告,但方法仍然可以被调用。

  • 双参数:

    [Obsolete("此类已经过期啦!", true)]中的true表示该方法将由于过时而无法被调用,false表示仅给出警告而不会阻止调用。

示例代码:

class Attributes {    [Obsolete("此类已经过期啦!", false)]     public void ObsoleteTest() {        Console.WriteLine("测试函数:Obsolete");    }}

2. Conditional 特性

Conditional 特性用于隐藏或只在特定条件下启用的代码部分。这种特性非常适合对某些功能进行后续开发或测试时不想影响现有功能的执行。

使用s.Stdout.WriteLine方式的代码示例:

class Attributes {    [Conditional("TEXT")]     public void ConditionalTest() {        Console.WriteLine("测试函数:Conditional");    }        [Conditional("Text")]     public void C() {        Console.WriteLine("又是一个测试 Conditional 的函数!");    }}

在主函数中调用时,必须在文件顶部定义#define TEXT,否则隐藏的函数将不会执行:

class Program {    static void Main(string[] args) {        Attributes attributes = new Attributes();        attributes.ConditionalTest();        attributes.C();        Console.WriteLine("\n按任意键退出...");        Console.ReadKey();    }}

3. AttributeUsage 特性

AttributeUsage 特性是用来定义自定义特性的。它允许开发者定义特性并指定应用的范围(如类、方法等),还能限制是否继承以及是否允许多个特性同时修饰目标代码。

自定义特性的一般结构如下:

  • 必须继承自Attribute类。
  • 属性名必须以Attribute结尾。

示例:

[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]class HelpAttribute : Attribute {    public HelpAttribute(string str) {        this.str = str;    }    public string Str {        get {            return this.str;        }    }    private string str;}

使用自定义特性标注的类:

[Help("这是一个自定义的特性!")]class Test {    public void Print() {        Console.WriteLine("测试自定义特性!");    }}

注意:AttributeTargets.Class表示该特性只能应用在类的顶部。如果使用AttributeTargets.All,就可以应用在类、方法、构造函数等多个位置。


总结

通过对Obsolete、Conditional和AttributeUsage特性的学习,我对C#的开发能力有了更全面的了解。这三大特性在不同场景下都有其独特的用途,尤其是Conditional和自定义特性,在代码管理和优化中非常实用。虽然AttributeUsage的第三个参数Inherited目前尚不清楚具体作用,但计划通过查阅资料进一步深入理解。此外,建议新手从基础功能入手,逐步学习C#的高级特性,以提升编程能力。

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

你可能感兴趣的文章
python+selenium进行cnblog的自动化登录测试
查看>>
Python函数只返回第一个值而不是数据框
查看>>
Python+SQL实战:京东用户行为数据分析案例解析(上)
查看>>
Python+SQL实战:京东用户行为数据分析案例解析(下)
查看>>
PYTHON+Twisted+sqlanydb=ABORT()
查看>>
Python函数之返回值、作用域和局部变量
查看>>
Python+统计学 | 探索常用的数据分析统计分布
查看>>
python, selenium中用于切换帧的函数
查看>>
python函数
查看>>
python----线程、进程、协程的区别及多线程详解
查看>>
python---5
查看>>
python---使用celery分布式系统异步发送短信(云通讯)来验证登录
查看>>
python--003--百分号字符串拼接、format
查看>>
Python--10、线程
查看>>
Python--Redis实战:第四章:数据安全与性能保障:第4节:复制
查看>>
python--基本代码规范
查看>>
Python--抽象类接口类
查看>>
PYTHON--欧拉习题二
查看>>
python--高级应用总结
查看>>
python-520表白代码,我看谁说程序员不懂浪漫,送你几套表白代码,一步到位
查看>>