文谷首页 | 业界传真 | 网络技术 | 服务器 | 数据库 | 存储技术 | 系统安全 | 无线技术 | Cisco | .Net | Windows | Linux | Unix | Java
电子商务 | 网站工程 | 网页设计 | 平面设计 | 多媒体 | 编程语言 | Oracle | MSSQL | Photoshop | ASP | PHP | 实用技巧 | 进程查询 | 文谷论坛
.NET频道
 资讯动态   ASP.NET   C#   ADO.NET   VC.NET   VB.NET   .NET Framework   WebService
您现在的位置: IT文谷 >> 开发平台 >> .net framework >> C# >> 文章正文
是Attribute,还是Property?是Attribute,还是Property?2007-1-28 12:09:10是Attribute,还是Property?2007-1-28 12:09:10是Attribute,还是Property?
是Attribute,还是Property?
是Attribute,还是Property?是Attribute,还是Property?2007-1-28 12:09:10是Attribute,还是Property?2007-1-28 12:09:10是Attribute,还是Property?
是Attribute,还是Property?是Attribute,还是Property?2007-1-28 12:09:10是Attribute,还是Property?2007-1-28 12:09:10是Attribute,还是Property?

是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。

 

    当我们在学习新知识的时候,除了“知其然”,更要“知其所以然”,这样我们才能对概念有深层次的理解。同时,在我们平日里使用术语的时候,一定要准确,否则在交流时遇到不必要的障碍,白白增加交流成本。


是Attribute,还是Property?是Attribute,还是Property?2007-1-28 12:09:10是Attribute,还是Property?2007-1-28 12:09:10是Attribute,还是Property?
  • 上一篇文章:

  • 下一篇文章:
  • 进入论坛讨论

    相关文章
    c#中通过值和引用传递参数
    一个相当独立的通用分页控件c#源码
    病毒及流氓软件自我复制的简单实现
    C#中Dispose和Close的区别
    详细解说C#里使用指针
    C#:从资源文件里加载文件
    利用C#实现分布式数据库查询
    C#.NET windows控件实现水印
    C#纯数学方法递归实现货币数字转换中文
    c#中什么情况下用Convert.ToInt32?
    使用 Flex 上传文件
    基于.Net平台唯一运行实例C#代码实现
    热门文章最新推荐

    版权与免责声明:
    ① 本网转载其他媒体稿件是为传播更多的信息,此类稿件不代表本网观点,版权归原作者所有,本网不承担此类稿件侵权行为的连带责任。
    ② 本站原创文章,转载时请注明出自文谷及作者姓名
    ③在本网BBS上发表言论者,文责自负。
    ④如您因版权等问题需要与本网联络,请在30日内联系 。
    是Attribute,还是Property?是Attribute,还是Property?2007-1-28 12:09:10是Attribute,还是Property?2007-1-28 12:09:10是Attribute,还是Property?
    是Attribute,还是Property?是Attribute,还是Property?2007-1-28 12:09:10是Attribute,还是Property?2007-1-28 12:09:10是Attribute,还是Property?

    全站热点
    最新推荐
    关于文谷 | 联系文谷 | 免责声明 | 文谷论坛
    Tel: 0577-65690019      E-mail: ichenjian@gmail.com    MSN:ichenjian@hotmail.com    QQ:2911194
    Copyright © 2004-2008 wengu.com 文谷 All Rights Reserved
    浙ICP备05000327号