Property和Attribute的区别

2016-08-24 19:40:12来源:CSDN作者:just0kk人点击

Property属于面向对象理论范畴。在使用面向对象思想编程的时候常常需要对客观事物进行抽象,再把抽象出来的结果封装成类,类中用来表示对象状态的成员就是property

Attribute则是编程语言文法层面的东西,比如有两个同类的语法元素A和B,为了区分A和B,就需要加一些Attribute,attribute可以翻译为特征。

在标签语言中进行面向对象编程时,property也被包装成为attribute,但并不意味着所有attribute都是property。

To summarize, attributes support tools that operate on your code, but properties define the state of an object and there is no logical comparison between the two.
总的来说,attribute支撑了你程序中的的各个部分运行,而Properties定义了你的对象的状态,两者之间没有逻辑关系
原文

据博主理解:例如在一个Windows程序中有一个一个CheckBox对象,如果将整个程序视为一个状态机,那么显然CheckBox的IsChecked和IsEnabled属性能够影响程序的运行结果,也即是“决定了对象的状态”,它们是对象的Attribute,而它们的True或False是对象的Property;

相比之下,它的Name显然就只影响这个对象在程序中的名字,至于它是叫“Start”也好还是叫“Kill_Everyone”也好,并不影响程序后台逻辑的执行,它最多出现在元数据表中,不“决定对象的状态”,因而没有Property。但它确实支撑了应用程序的运行,所以依然是对象的Attribute。

或者说得不严谨但明白一些,Attribute就是起的那些名字,对象名,变量名,只要表征着什么,就是Attribute。

补充一下,如下表所示,在不同范畴内同一概念的不同别名

Description OOA/OOD C++ .NET(C#)/Delphi
Feature Attribute Member Variable Field
Operation Method Member Function Method

可见在C#中的Attribute和OOA/OOD中的含义是略有不同的,在C#中,一个对象包含的所有信息都是它的Attribute,而在OOA/OOD中只有成员变量才是它的Attribute。

我想现在在C#的范畴内,各位对这两个概念之间的关系已经基本明朗了,我们在来看看在其他范畴内这两者的区别在何处

In general terms (and in normal English usage) the terms mean the same thing.
In the specific context of HTML / Javascript the terms get confused because the HTML representation of a DOM element has attributes (that being the term used in XML for the key/value pairs contained within a tag) but when represented as a JavaScript object those attributes appear as object properties.
To further confuse things, changes to the properties will typically update the attributes.
For example, changing the element.href property will update the href attribute on the element, and that’ll be reflected in a call to element.getAttribute(‘href’).
However if you subsequently read that property, it will have been normalised to an absolute URL, even though the attribute might be a relative URL!
原文

可见,同C#中一样,在HTML中,也可以将Attribute看成是对Property的一种包装,映射。而Property则代表一个对象的内在状态。

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台