特性、属性、字段

CTS通用类型系统(Commom Type System)

CLS通用语言规范(Commom Language Specification)

CTS和CLS是CLR的核心。

.Net会通过编译器把代码编译成.NET CLR能认识的metaData和IL代码

特性(Atrribute):是用于在运行时传递程序中各种元素(比如类、方法、结构、枚举、组件等)的行为信息的声明性标签。可以通过使用特性向程序添加声明性信息。一个声明性标签是通过放置在它所应用的元素前面的方括号[]来描述的。

逻辑上,当编译器检测到向目标元素应用了定制特性时,会调用特性类的构造器,向它传递任何指定的参数,从而构造特性类的实例。然后编译器采用增强型构造器语法所指定的值,对任何公共字段和属性进行初始化。构造并初始化好特性类的对象之后,编译器将它的状态序列化到目标元素的元数据表记录项中。

属性(Property):实际上就是一个私有字段加上字段取值方法和字段复制方法(方法可以选择性开放或者不开放)

字段(Field):就是简单的字段变量

所以本文主要讲解一下特性:

特性在被编译器编译时,和传统的命令式代码不同,它会被以二进制数据的方式写入模块文件的元素据中,而在运行时的时候在被解读出来使用。所以特性也是经常被反射机制应用,因为特性本身就是以元素据的形式存放的。

 自定义属性的限制特性: ①AttributeUsage(里面有三个比较常用的属性:①AttributeTargets(自定义特性的所用范围) ②Inherited(特性能否被继承) ③allowMultiple(能否多次使用))

自定义特性类的实例构造函数、字段和属性时,可供选择的数据类型并不多。只允许Boolean,Char,Byte,SByte,Int16,Int32,UInt32,Int64,UInt64,Single,Double,String,Type,Objec或枚举类型。此外,可使用上述任一类型的一维0基数组。单应尽量避免使用数组,因为对于定制特性,如果它的构造器要获取数组作为参数,就会失去与CLS的相容性。

 

转载于:https://www.cnblogs.com/luoluoluoD/p/10730055.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值