欢迎光临
我们一直在努力

是Attribute,还是Property?-.NET教程,评论及其它

建站超值云服务器,限时71元/月
是attribute,还是property?有时是个麻烦。
attribute和property都可以翻译成“属性”,有的地方用attribute表示“属性”,有的地方又在用property,初学者常常在这两个单词间“迷失”,甚至认为二者没有区别,是一样的。可是attribute不等于property。二者之间到底有何区别?
 
我们从ooa/ood(object oriented analysis / object oriented design,面向对象分析与设计)说起。在ooa/ood中的使用attribute表示属性,指对象(object)的特征(feature)。我们在一些编程语言(如c#、delhpi等)中遇到的“属性”一词,为何是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
 
ooa/ood中的方法(method)是指对象的操作(operation)。在c++中称为member function(成员函数),而在c#中还是叫做method。在表中加入对方法(method)的称呼:
description
ooa/ood
c++
.net(c#) /delphi
feature
attribute
member variable
field
operation
method
member function
method
 
也可以看出,c++中将attribute称为member variable,将method称为member function,其实还是很贴切的。从本质上说,确实是在声明变量、定义函数。后来者(c#等)可能觉得这样的称呼不够oo(object oriented,面向对象),于是做了些改变。method延用ooa/ood的称呼不用说,但将attribute称作field,总觉得欠妥。因为db(database,数据库)中有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;
        }
        set {
            name = value;
        }
    }
}
 
我们顺便看看private和public:property本质上是一对get/set方法,可以进行访问控制,因而可以设置为public;而按照ooa/ood原则,attribute不能设为public,而要设为private。
 
c#中确实也有attribute,把它译作“特性”似乎更好些。如:
[webmethod]
在不少的.net/c#书籍中看到有把attribute译成“属性”的,这样一来,老鸟倒是可以通过语境判断出来不是在说property,初学者恐怕一下子就跌进云里雾里了。虽然不至于“一个馒头引发的血案”,但“两个属性引发的歧异”,终究不是什么好事情。
 
另外,在web编程中也常见到attribute和property混用的情况。比如用vs 2003或2005创建一个asp.net应用程序,如果在代码视图添加控件:
<asp:textbox id=”txtname” text=”hello” runat=”server” />
此时textbox控件中的id、text和runat都称为attribute,这是延用了html中对属性(attribute)的称呼。
 
如果是在设计视图中拖放控件,然后在属性(properties)窗口中设置id或text,此时又会将id或text称为property。因为控件在服务器上是作为控件类(control class)实现,使得可以用编程的方式来访问控件。那么属性必然是class中的property。
 
当我们在学习新知识的时候,除了“知其然”,更要“知其所以然”,这样我们才能对概念有深层次的理解。同时,在我们平日里使用术语的时候,一定要准确,否则在交流时遇到不必要的障碍,白白增加交流成本。
赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 是Attribute,还是Property?-.NET教程,评论及其它
分享到: 更多 (0)