本文共 2050 字,大约阅读时间需要 6 分钟。
虽然菜鸟教程的内容比较基础,但通过自己的学习和探索,逐渐对C#的特性有了一定的理解。今天决定系统地整理一下C#中的三个主要特性:Obsolete、Conditional和AttributeUsage。这些特性在软件开发中非常有用,可以帮助开发者在不同场景下更方便地管理代码。
Obsolete 特性Obsolete 特性主要用于标识某些已经过时或不再支持的方法、类或代码部分。这种特性在维护大的项目时非常有用,可以让已经移除的代码部分仍然存在,但不会影响到新开发人员。它支持两个参数,分别是默认参数和布尔参数。
单参数:
使用时只需在方法或类上标注[Obsolete("此类已经过期啦!")],默认第二个参数为false,这表示虽然警告,但方法仍然可以被调用。双参数:
[Obsolete("此类已经过期啦!", true)]中的true表示该方法将由于过时而无法被调用,false表示仅给出警告而不会阻止调用。示例代码:
class Attributes { [Obsolete("此类已经过期啦!", false)] public void ObsoleteTest() { Console.WriteLine("测试函数:Obsolete"); }} 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(); }} 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/