property和attribute的区别
2008-04-10 15:24
302 查看
对于property和attribute这两个名词都叫“属性”的问题,来源于国内it书籍翻译界的疏忽。
其实它们来源于两个不同的领域,attribute属于OOA/OOD的概念,而property属于编程语言中的概念。下面我们来说明它们的异同。
Attribute
Attributes是Microsoft .NET Framework文件的元数据,可以用来向运行时描述你的代码,或者在程序运行的时候影响应用程序的行为。
Property
属性是面向对象编程的基本概念,提供了对私有字段的访问封装,在C#中以get和set访问器方法实现对可读可写属性的操作,提供了安全和灵活的数据访问封装。关于属性的概念,不是本文的重点,而且相信大部分的技术人员应该对属性有清晰的概念。以下是简单的属性
区别
可以说两者没有可比性,只不过我们国家的语言特点才引起的歧异,其实只要记住Attribute是派生于System,Attribute类之下,它的主要作用是描述,比如某为了描述某个方法是来自与外部的dll,
可以写如下代码,这就是一个Attribute,他是一个描述(或者说声明)
[DllImport("User32.dll")]
Attribute也有很多系统的“默认”属性,见下表
而Property是指编程过程中的字段,也即类的成员。
如:
private int hour; //定义私有变量表示"小时",外部是访问不到的.}
public int Hour// 定义Hour程序接口
{
set { hour=value; }
get { return hour;}
}
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1867483
其实它们来源于两个不同的领域,attribute属于OOA/OOD的概念,而property属于编程语言中的概念。下面我们来说明它们的异同。
Attribute
Attributes是Microsoft .NET Framework文件的元数据,可以用来向运行时描述你的代码,或者在程序运行的时候影响应用程序的行为。
Property
属性是面向对象编程的基本概念,提供了对私有字段的访问封装,在C#中以get和set访问器方法实现对可读可写属性的操作,提供了安全和灵活的数据访问封装。关于属性的概念,不是本文的重点,而且相信大部分的技术人员应该对属性有清晰的概念。以下是简单的属性
区别
可以说两者没有可比性,只不过我们国家的语言特点才引起的歧异,其实只要记住Attribute是派生于System,Attribute类之下,它的主要作用是描述,比如某为了描述某个方法是来自与外部的dll,
可以写如下代码,这就是一个Attribute,他是一个描述(或者说声明)
[DllImport("User32.dll")]
Attribute也有很多系统的“默认”属性,见下表
预定义的属性 | 有效目标 | 说明 |
AttributeUsage | Class | 指定另一个属性类的有效使用方式 |
CLSCompliant | 全部 | 指出程序元素是否与CLS兼容 |
Conditional | Method | 指出如果没有定义相关联的字符串,编译器就可以忽略对这个方法的任何调用 |
DllImport | Method | 指定包含外部方法的实现的DLL位置 |
STAThread | Method(Main) | 指出程序的默认线程模型为STA |
MTAThread | Method(Main) | 指出程序的默认模型为多线程(MTA) |
Obsolete | 除了Assembly、Module、Parameter和Return | 将一个元素标示为不可用,通知用户此元素将被从未来的产品 |
ParamArray | Parameter | 允许单个参数被隐式地当作params(数组)参数对待 |
Serializable | Class、Struct、enum、delegate | 指定这种类型的所有公共和私有字段可以被串行化 |
NonSerialized | Field | 应用于被标示为可串行化的类的字段,指出这些字段将不可被串行化 |
StructLayout | Class、struct | 指定类或结构的数据布局的性质,比如Auto、Explicit或sequential |
ThreadStatic | Field(静态) | 实现线程局部存储(TLS)。不能跨多个线程共享给定的静态字段,每个线程拥有这个静态字段的副本 |
如:
private int hour; //定义私有变量表示"小时",外部是访问不到的.}
public int Hour// 定义Hour程序接口
{
set { hour=value; }
get { return hour;}
}
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1867483
相关文章推荐
- attribute与property区别总结
- .net程序员的盲点(二):两个“属性”引起的歧异-property和attribute的区别
- 简述Field,Attribute,Property的区别
- javascript中attribute和property的区别详解
- JavaScript 中 Property 和 Attribute 的区别详解
- C#中Attribute和Property的区别
- 区别C#中的两个属性(Property和Attribute)
- 【心得】Attribute和Property的区别;
- Attribute 和 Property 的区别
- property和attribute的区别
- 简述Field,Attribute,Property的区别
- Property和attribute的区别
- JavaScript中property和attribute的区别详细介绍
- JavaScript 中 Property 和 Attribute 的区别详解
- attribute和property区别
- [原]简述Field,Attribute,Property的区别
- JS中的attribute和property的区别和联系
- .net程序员的盲点(二):两个“属性”引起的歧异-property和attribute的区别
- .net程序员的盲点(二):两个“属性”引起的歧异-property和attribute的区别
- HTML中的attribute和property的区别