`
evget
  • 浏览: 144763 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
文章分类
社区版块
存档分类

.net开发中property和attribute两个“属性”引起的歧异

阅读更多
对于property和attribute这两个名词都叫“属性”的问题,来源于国内it书籍翻译界的疏忽。
  其实它们来源于两个不同的领域,attribute属于OOA/OOD的概念,而property属于编程语言中的概念。下面我们来说明它们的异同。

  Attribute

  Attributes是Microsoft .NET Framework文件的元数据,可以用来向运行时描述你的代码,或者在程序运行的时候影响应用程序的行为。

  Property

  属性是面向对象编程的基本概念,提供了对私有字段的访问封装,在C#中以get和set访问器方法实现对可读可写属性的操作,提供了安全和灵活的数据访问封装。关于属性的概念,不是本文的重点,而且相信大部分的技术人员应该对属性有清晰的概念。以下是简单的属性

  区别

  可以说两者没有可比性,只不过我们国家的语言特点才引起的歧异,其实只要记住Attributes是派生于System,Attributes类之下,它的主要作用是描述,比如在某一个自定义控件中的“属性”就是指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)。不能跨多个线程共享给定的静态字段,每个线程拥有这个静态字段的副本

  而Property是指编程过程中的字段,也即类的成员。

  如:

  private int hour; //定义私有变量表示"小时",外部是访问不到的.}
  public int Hour// 定义Hour程序接口

  {

  set { hour=value; }

  get { return hour; }

  }



原文出处:http://www.evget.com/zh-CN/Info/ReadInfo.aspx?id=9145
分享到:
评论

相关推荐

    .Net对象属性名在PropertyGrid 中显示中文

    标题中的".Net对象属性名在PropertyGrid中显示中文"指的是在.NET框架中,当你使用PropertyGrid控件来展示一个对象的属性时,如果属性名是英文,你可能希望它们在界面上以中文形式呈现,以方便中国用户理解和操作。...

    .net中attribute实现方法调用拦截(就是aop)

    在.NET框架中,Attribute是一种元数据,用于向编译器、IDE、运行时环境等提供额外的信息。这些信息可以用来修饰类、接口、方法、属性等各种编程元素,从而实现特定的功能或扩展。AOP(面向切面编程)是一种编程范式...

    Property和Attribute的区别

    Property可以说是一个面向对象的概念,提供了对私有字段的访问封装,在C#中以get和set访问器方法实现对可读可写属性的操作,提供了安全和灵活的数据访问封装。 例如: ``` public class Robot { private string...

    Attribute在.net编程中的应用

    在.NET框架中,Attribute不仅仅是一个关键字,而是一个类,它是系统定义的一系列特殊类的基类,用于标记代码的不同元素,如类型、方法、属性等。 首先,我们需要理解Attribute与类的property成员之间的区别。虽然...

    .net中Attribute、TypeConverter、UITypeEditor的自定义--.net自定义控件属性特性配置及相关类的设计

    3、例子中实现了一个自定义的Attribute:DisplayNameAttribute和一个自定一个TypeConverter:EnumConverter,以支持显示的值与实际选中的值可以不同并一一对应。 注意,各个属性均是自己定义的一个枚举类型...

    Attribute在.net编程中的应用(全).doc

    Attribute主要用于为.NET框架中的类型、字段、方法和属性等添加元数据信息。这些信息可以在运行时被访问,并且能够影响代码的行为。 #### 二、Attribute的概念及特点 ##### 1. Attribute是什么? Attribute是一种...

    ASP.NET MVC5 新特性:Attribute路由使用详解

    总结而言,Attribute路由为ASP.NET MVC5带来了更加灵活和简洁的路由管理方式,通过使用Attribute路由,开发人员可以更加直观地管理路由规则,同时保持代码的清晰性和可维护性。无论是可选参数、默认值还是路由前缀等...

    propertyGrid动态加载自定义属性

    在.NET框架中,`PropertyGrid`控件是一个强大的工具,用于显示和编辑对象的属性。它通常用于创建用户界面,使用户能够查看和修改对象的属性。本篇将深入探讨如何在C#中使用`PropertyGrid`动态加载自定义属性,以实现...

    Attribute在.NET中的应用

    总的来说,Attribute是.NET开发中的一个重要工具,它增强了代码的表达能力和灵活性,同时也方便了工具和库的开发者获取和理解代码的意图。对于初级.NET开发者来说,理解并熟练使用Attribute是提高编程效率和代码质量...

    propertyGrid 属性处理演示demo

    在.NET框架中,`PropertyGrid`控件是一个强大的工具,用于显示和编辑对象的属性。这个控件在设计时和运行时都非常有用,因为它能够自动生成一个用户界面,该界面可以展示任何对象的属性,并允许用户进行交互式编辑。...

    .net项目开发经常用的类

    5. **FileInfo/DirectoryInfo**: 这两个类是`System.IO`命名空间中的强类型对象,提供了对文件和目录更高级的操作,如获取属性、修改权限等。 6. **HttpClient**: 在Web开发中,`HttpClient`类用于发送HTTP请求和...

    Attribute在NET中的应用

    在.NET框架中,属性(Attribute)是一种元数据,可以附加到程序元素,如类、方法、属性等,为编译器、运行时环境或其他工具提供额外的信息。它们是编程中的一个重要概念,允许开发者向代码中添加非执行性的描述性...

    给propertyGrid动态添加属性

    在.NET框架中,`PropertyGrid`控件是一个强大的工具,用于显示和编辑对象的属性。它通常用于创建用户界面,使用户能够查看和修改对象的属性值。在C#编程中,`PropertyGrid`控件提供了简洁的方式来进行数据绑定和...

    .NET开发规范.doc

    .NET开发规范的目的是为了确保应用程序、组件、文件之间保持一致性和可读性,方便代码和结构的管理,从而提高开发效率并实现产品标准化。这套规范主要包括命名规范和编码规范两大部分。 #### 2. 命名规范 ##### 2.1...

    C#中Property和Attribute的区别实例详解

    在C#中有两个属性,分别为Property和Attribute,两个的中文意思都有特性、属性之间,但是用法上却不一样,为了区别,本文暂把Property称为特性,把Attribute称为属性。 Attribute才是本文的主角,把它称为属性我觉得...

    C# 自定义属性在propertyGrid控件中显示 演示demo

    假设我们有一个`Person`类,包含`Name`和`Age`两个属性: ```csharp public class Person { [Description("请输入姓名")] public string Name { get; set; } [Description("请输入年龄,必须大于0")] public ...

    Attribute标记属性_资料收集

    Attribute标记属性在.NET框架中扮演着重要的角色,它是元数据的一部分,允许我们在代码中附加信息,这些信息在程序运行时可以被编译器、运行时或其他工具读取和使用。Attribute提供了一种灵活的方式来注解类、方法、...

    NET组件编程 asp.net组件开发

    .NET组件编程是开发ASP.NET应用时的关键技术,它涉及到组件(Component)和控件(Control)的创建。组件和控件都是.NET Framework中的基础构建块,但它们在用途和表现形式上有所不同。 首先,让我们澄清Component和...

Global site tag (gtag.js) - Google Analytics