property 和 attribute 都被翻译为“属性”,实际上两种都是大相径庭的。它们来源于两个不同的领域,attribute属于OOA/OOD的概念,而property属于编程语言中的概念。
attributy是Microsoft.net Framework文件的元数据,可以用来运行时描述你的代码,或者在程序运行的时候影响应用程序的行为。
property属性是面向对象的基本概念,提供了对私有字段的访问封装,在C#中以get和set访问器方法实现对可读可写属性的操作,提供了安全和灵活的数据访问封装。
可以说两种没有可比性,但attribute是派生于System、attribute类之下主要作用是描述,比如描述某个方法是来之外部的dll,写如下代码,就是一个attribute,它是一个描述(或者说是声明):
[DllImport(User32.dll)]
而property是指编程过程中的字段、即类的成员,如下
传统写法:
private int _hour;
public int Hour
{
get { return _hour; }
set { _hour = calue; }
}
.net 4中也可以写成
public int Hour{ get ; set ;}
private int _hour;
public int Hour
{
get { return _hour; }
set { _hour = calue; }
}
.net 4中也可以写成
public int Hour{ get ; set ;}