Property和Attribute的区别

更新时间:2023-08-03 11:32:35 阅读: 评论:0

C#中Property和Attribute的区别
Property就是访问字段(成员变量,Field)提供的一种方式(t/get)
Property是C#中引入的一种语言特性,把C++中的一些编程技巧上升到语法的地位。这种特性就是把类数据成员声明为私有的,而提供公有的方法实现对他们的访问。
Property可以说是一个面向对象的概念,提供了对私有字段的访问封装,在C#中以get和t访问器方法实现对可读可写属性的操作,提供了安全和灵活的数据访问封装。比如:
1.public class Robot 
2.
3.    private string描写小溪的句子 name = "";   //字段:Field  
4.    public string Name          //属性:Property,对Field进行封装。 血液的三大组成 
5.      { 
6.q网名        get { return name; } 
7.        t { name = value; } 
8.    } 
9.
Property是指类向外提供的数据区域,是智能的字段,其中有get和t访问器来完成字段的取值和赋值。而Attribute则是描述对象在编译时或运行时属性的。这两者是有本质区别的,一个是属性,用于存取类的字段,一个是特性,用来标识类,方法等的附加性质。
是Attribute,还是Property?
Attribute和Property都能翻译成“属性”,有的地方用attribute表示“属性”,有的地方又在用roperty,初学者常常在这两个单词间“迷失”,甚至认为二者没有差别,是相同的。可是attribute不等于property。二者之间到底有何差别? 
我们从OOA/OOD(object oriented analysis / object oriented design,面向对象分析和设
计)说起。在OOA/OOD中的使用attribute表示属性,指对象(object)的特征(feature)。我们在一些编程语言(如c#、Delphi等)中遇见的“属性”一词,为何是property,而不是attribute呢?  为了理解这一点,我们把C++拽进来看看。OOA/OOD中的attribute在C++中称为member variable(成员变量),慢慢开始明白了吧。C++中的member variable在C#中能继续延用,但有了一个新的称呼:field(字段)。看一个简单的C#示例:
public class student
{              // student类   
private string name;        // C#中称为field(字段),C++中称为member variable(成员变量),OOA/OOD中称为attribute(属性)
我们整理出下表,能看到同样的概念在OOA/OOD、C++和c#中的不同称呼:
Description
OOA/OOD
C中药面膜++
. NET(C#) /描写风的古诗Delphi
Feature
Attribute
Member Variable
Field
Operation
Method
Member Function
Method
OOA/OOD中的方法(method)是指对象的操作(operation)。在C++中称为member function(成员函数),而在C#中还是叫做method。在表中加入对方法(method)的称呼:
也能看出,C++中将attribute称为member variable,将method称为member function,其实还是非常贴切的。从本质上说,确实是在声明变量、定义函数。后来者(C#等)可能觉得这样的称呼不够OO(object oriented,面向对象),于是做了些改动。method延用OOA/OOD的称呼不用说,但将attribute称作field,总觉得欠妥。因为databa(数据库)中有field的概念,也译作“字段”,实在是容易混淆。
目前我们能把OOA/OOD中提到的属性(attribute)同C#中提到的属性(property)区分开来。继续上面的示例:
public class student
{              // student类   
private string name;        // C#中称为field(字段),C++中称为member variable(成员变
量),OOA/OOD中称为attribute(属性)   
public string name
{          // c#中称为property(属性)       
get { return name; }       
500体育t { name = value; }   
元文}
我们顺便看看private和public:property本质上是一对get/t方法,能进行访问控制,因而能设置为public;而按照OOA/OOD原则,attribute不能设为public,而要设为private。
而C#中的“Attribute”则完全和OOA/OOD中的“Attribute” 完全不一样了,而是c#(net)全新引入的一个概念。
MSDN官方的解释如下:
公共语言运行时允许你添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型、字段、方法和属性等。Attributes和Microsoft Framework文件的元数据保存在一起,可以用来向运行时描述你的代码,或者在程序运行的时候影响应用程序的行为。
11英文
说的通俗些Attribute是类,不过是一类比较特殊的类,Attribute必须写在一对方括号中,用来处理中多种问题:序列化、程序的安全特征等等,在中的作用非同凡响。

本文发布于:2023-08-03 11:32:35,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1127606.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:属性   方法   提供   数据   字段
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图