zoukankan      html  css  js  c++  java
  • .net程序员的盲点(二):两个“属性”引起的歧异property和attribute的区别

     
    两个“属性”引起的歧异-propertyattribute的区别 
    这虽然没有“一个馒头引发的血案”那么严重,但是也足以成为.net程序员的技术盲点之二。
    对于propertyattribute这两个名词都叫“属性”的问题,来源于国内it书籍翻译界的疏忽。
    其实它们来源于两个不同的领域,attribute属于OOA/OOD的概念,而property属于编程语言中的概念。下面我们来说明它们的异同。
    Attribute
    AttributesMicrosoft .NET Framework文件的元数据,可以用来向运行时描述你的代码,或者在程序运行的时候影响应用程序的行为。
    Property
    属性是面向对象编程的基本概念,提供了对私有字段的访问封装,在C#中以getset访问器方法实现对可读可写属性的操作,提供了安全和灵活的数据访问封装。关于属性的概念,不是本文的重点,而且相信大部分的技术人员应该对属性有清晰的概念。以下是简单的属性
    区别
    可以说两者没有可比性,只不过我们国家的语言特点才引起的歧异,其实只要记住Attribute是派生于System,Attribute类之下,它的主要作用是描述,比如某为了描述某个方法是来自与外部的dll
    可以写如下代码,这就是一个Attribute,他是一个描述(或者说声明)
    [DllImport("User32.dll")]
     
    Attribute也有很多系统的“默认”属性,见下表
    预定义的属性
    有效目标
    说明
    AttributeUsage
    Class
    指定另一个属性类的有效使用方式
    CLSCompliant
    全部
    指出程序元素是否与CLS兼容
    Conditional
    Method
    指出如果没有定义相关联的字符串,编译器就可以忽略对这个方法的任何调用
    DllImport
    Method
    指定包含外部方法的实现的DLL位置
    STAThread
    Method(Main)
    指出程序的默认线程模型为STA
    MTAThread
    Method(Main)
    指出程序的默认模型为多线程(MTA)
    Obsolete
    除了AssemblyModuleParameterReturn
    将一个元素标示为不可用,通知用户此元素将被从未来的产品
    ParamArray
    Parameter
    允许单个参数被隐式地当作params(数组)参数对待
    Serializable
    ClassStructenumdelegate
    指定这种类型的所有公共和私有字段可以被串行化
    NonSerialized
    Field
    应用于被标示为可串行化的类的字段,指出这些字段将不可被串行化
    StructLayout
    Classstruct
    指定类或结构的数据布局的性质,比如AutoExplicitsequential
    ThreadStatic
    Field(静态)
    实现线程局部存储(TLS)。不能跨多个线程共享给定的静态字段,每个线程拥有这个静态字段的副本
     
     
    Property是指编程过程中的字段,也即类的成员。
    如:
    private int hour; //定义私有变量表示"小时",外部是访问不到的.}

    public int Hour//
    定义Hour程序接口

    {

    set { hour=value; }

    get { return hour;}

    }
     
  • 相关阅读:
    【原创】基于Altera DE2的数字实验—001_1 (DE2)(Digital Logical)(Verilog)
    【笔记】Excel技巧—012 隔行插入
    【笔记】Excel技巧016使用语音校验输入准确性
    【翻译】Nios design contest 2007001
    【笔记】Excel技巧—014 多窗口协同作业
    【笔记】Excel技巧—013 方便查看标题的“冻结窗格”功能
    【翻译】Nios II处理器简介 (Nios II)
    【笔记】Excel技巧—011 改变工作表标签颜色与字号
    【原创】DE2实验解答—lab7 (Quartus II)(Digital Logic)(Verilog HDL)
    【笔记】Linux基础—001 安装CentOS5.6
  • 原文地址:https://www.cnblogs.com/hainange/p/6153372.html
Copyright © 2011-2022 走看看