特性简介
特性
特性就是将一段特性代码和我们的代码组合,为我们的某些代码添加一些信息
自带的三个特性
[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 { }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器