设为首页收藏本站language 语言切换
查看: 1393|回复: 0
收起左侧

.Net技术开发中两个“属性”引起的歧异

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

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-4-25 23:10 , Processed in 0.106486 second(s), 24 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表