属性与特性的区别
属性与特性的区别:
首先在网上找个例子来解释下特性:
假设有一天你去坐飞机,你就必须提前去机场登机处换登机牌。登机牌就是一张纸,上面写着哪趟航班、由哪里飞往哪里以及你的名字、座位号等等信息,其实,这就是特性。它不需要你生理上包含这些属性(人类出现那会儿还没飞机呢),就像上面的HumanBase类没有IsSerializable这样的属性,特性只需要在类或方法需要的时候加上去就行了,就像你不总是在天上飞一样。
当我们想知道HumanBase是不是可序列化的,可以通过:
1: static void Main(string[] args)
2: {
3: Console.WriteLine(typeof(HumanBase).IsSerializable);
4:
5: Console.ReadLine();
6: }
拿到了登机牌,就意味着你可以合法地登机起飞了。但此时你还不知道你要坐的飞机停在哪里,不用担心,地勤人员会开车送你过去,但是他怎么知道你是哪趟航班的呢?显然还是通过你手中的登机牌。所以,特性最大的特点就是自描述。
既然是起到描述的作用,那目的就是在于限定。就好比地勤不会把你随便拉到一架飞机跟前就扔上去了事,因为标签上的说明信息就是起到限定的作用,限定了目的地、乘客和航班,任何差错都被视为异常。如果前面的HumanBase不加上Serializable特性就不能在网络上传输。
特性就是对所修饰的对象进行自我描述能够做什么事。而什么事就由特性说了算,没有这个特性就不能做特性描述的事情了。而属性就是是对象里的一个变量而已,可以被访问。