特性简介

特性

特性就是将一段特性代码和我们的代码组合,为我们的某些代码添加一些信息

自带的三个特性

[Obsolete]特性,主要用于标记过时代码或已被替换的旧代码

该特性有两个参数:

message:主要用于添加描述信息

error:是一个bool值,false为生成一个警告,true为报错

[Obsolete("过时方法")]
private static void OutModed()
{
    Console.WriteLine("我是过时的方法");
}

调用该方法时:

 

[Conditional]特性,主要用于忽略某个方法或属性

参数为条件或方法的名称,此参数需要区分大小写

复制代码
[Conditional("DEBUG")]
private static void Debug()
{
    Console.WriteLine("我是debug");
}

[Conditional("Trace")]
public static void Trace()
{
    Console.WriteLine("我是TRACE");
}
复制代码

调用这两个方法:

 [AttributeUsage]描述了如何使用一个自定义特性类

  • 参数AttributeTargets 指定可以应用特性的类别
  • 参数allowMultiple 指示该特性是单用还是多用  默认false
  • 参数inherited是否可以继续 默认true
[AttributeUsage(AttributeTargets.Class|AttributeTargets.Method,AllowMultiple = false)] //可用|规定多种可应用类别
class TestAttribute : Attribute
{
    public TestAttribute(int howManyTimes)=> this.HowManyTimes = howManyTimes;
    public string WhatDoseItDo { get; set; }
    public int HowManyTimes { get;private set;}
}        

上述特性只声明了类和方法,所以如下用在结构中会报错

[Test(12)] //会报错,因为只声明了Class,Method
struct Test1
{
    //结构
}

上述特性AllowMutiple为false,所以不能重复使用

[Test(12)]
[Test(13)]
class Test1
{   
}

可直接在调用特性时为特性成员赋值

[Test(1000,WhatDoseItDo ="voodoo")]
public class TestClass { }

 

posted @   邢韬  阅读(183)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
点击右上角即可分享
微信分享提示