C#回顾 –6.特性

1.特性是什么?

Attribute用来对类、属性、方法等标注额外的信息,贴一个标签(附着物)

通俗:给 类 或 类成员 贴一个标签,就像航空部为你的行李贴一个标签一样

个人理解,特性就是修饰对象元数据的修饰符。



 图中的

1.是特性             2.是访问修饰符

3.声明修饰符     4.数据类型

5.变量名            6.变量数据值

其中1、2、3、4、5就是元数据,用来描述数据(6)的数据。

2.特性到底是什么?

如上面的 Obsolete  ,会不会也是一个如 public 、 static 这样类似的修饰符呢,我们且看看反编译后的中间语言。

意料之外,我们看到了上面的2、3、4、5,而1(特性)怎么跑到里面去了,且是一种看不懂的东东,反正我们知道了不是类似的修饰符。

然后我们接着在vs里面把光标移到 Obsolete  上按F12,如:

原来只是一个继承了 Attrbute 的一个类(class)。那么上面我们看不懂的部分应该就是这个 ObsoleteAttribute 类的实例化了。

我们来回答上面问题:特性到底是什么?特性只是一个类而已。

3.自定义特性

我们看到上面系统特性 Obsolete 上面还有特性,如:Serializable、AttributeUsage、Camvisible等。像这种特性我们称之为“元数据的元数据”(元元数据)。

1.我们分别来解释性上面的三个特性。

Serializable:表示类型支持序列化。

ComVisible:微软定义“控制程序集中个别托管类型、 成员或所有类型对COM的可访问性”。

AttributeUsage:这个比较重要了,基本上每个特性定义都用到了它。它就是用来表示当前这个特性可用于哪些对象。如:类、方法、属性...等等。(只需要用到这个我们就可以自定义特性了)

来自为知笔记(Wiz)

时间: 2024-10-05 22:17:53

C#回顾 –6.特性的相关文章

html+css学习笔记 3[浮动]

inline-block/float(浮动) 回顾:inline-block 特性:      1.块在一排显示 2.内联支持宽高 3.默认内容撑开宽度 4.标签之间的换行间隙被解析(问题) 5.ie6 ie7不支持块属性标签的inline-block(问题) float浮动: 1.块在一排显示     2.内联支持宽高     3.默认内容撑开宽度      4.脱离文档流     5.提升层级半层 文本流 float:left | right | none | inherit; 文档流是文档

inline-block的升级float:浮动

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title></title> 6 <style> 7 img{ 8 float: left; 9 } 10 p{ 11 clear:left; 12 } 13 </style> 14 </head> 15 <body> 16 <img

浮动、居中等笔记

样式:就近原则 Eg:行内>内部>外部 Border:1px solid red;(一个不能拉下) 盒子3D模型: Border Content+padding Background-image Background-color Margin Background:url() 0 0[设置位置] no-repeat; 盒子尺寸=外框+内边距+外边距+content Class=“content book”[book为追加样式] 盒子不设置高度时,可随内容自适应 第一种居中方法: 块级元素:纵向

【译】ES5重要特性回顾

题记:作者有个观点,学习ES6之前,必须先懂ES5,恰巧和我的观点吻合,这里找到作者2014年写的讲的ES5的文章,因而翻译了下来.下面的内容捡重点翻译,不重要的略过,文中ES5和ES5.1含义相同. 原文:Thinking About ECMAScript 5 Parts ES5.1的浏览器支持情况 所有现代浏览器都支持ECMAScript 5.1(ie9+, chrome 19+, safari 5+, firefox 4+, opera 12+, Android 3+, Blackberr

回顾一下红宝书中获取元素特性的三个方法

每个元素都有一个或多个属性,这些特性的用途是给出相应元素的内容的附加信息.操作特性的DOM方法主要有三个. getAttributr(), <div id="btn" data-test="test"></div> let btn = document.getElementById('btn'); alert(btn.getAttribute('data-test')); // 弹出为'test' setAttribute(), //接收两个

回顾知识,H5的新特性

H5的新元素让一个页面避免都是div,灵活使用H5的各种新元素 1,结构元素 section元素 可以认为div是section元素,一个普通的分块元素,可用来定义网站中的特定的可区别的区域 header元素包括标题,logo,导航和其他页眉的内容,可以在网站上加多个header,就像给内容加多个标题 hgroup元素 即将标题进行分组的元素 footer元素版权声明和作者信息,包涵一些链接 nav元素主要用于主导航菜单 article元素独立成文且以其他格式重用的内容应该置于一个article

回顾C#各版本特性

C# 6.0 Read-only auto-properties(只读自动属性) 以前版本,声明只读属性时,示例: public string FirstName { get; private set; } public string LastName { get; private set; } 6.0,不显示写setter即是只读属性,但属性也只能在构造函数中初始化了 示例: public string FirstName { get; } public string LastName { g

H5特性回顾

canvas 绘画, video 媒介回放 audio元素 对本地离线存储的更好支持, 新的特殊内容 - 元素 比如 article,footer,header,nav,section, 新的表单控件  calendar,  date,  time, email, url, search,

回顾C++11标准特性(1)

今天突发奇想不想使用cout进行输出信息了,想把cout换成自己任意指定的非关键词变量名字进行输出 #include <iostream> using namespace std; int main(){ decltype(cout) &shit = cout; shit<<"i am piece of shit"<<endl; return 0; } 需要注意的是,我是用g++进行编译的时候需要指明使用的标准 g++ shit.cpp -o