熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

.net程序員的盲點(二):兩個屬性引起的歧義

2013-11-13 09:52:40  來源: .NET編程 

  兩個屬性引起的歧異property和attribute的區別這雖然沒有一個饅頭引發的血案那麼嚴重但是也足以成為net程序員的技術盲點之二

  對於property和attribute這兩個名詞都叫屬性的問題來源於國內it書籍翻譯界的疏忽

  其實它們來源於兩個不同的領域attribute屬於OOA/OOD的概念而property屬於編程語言中的概念下面我們來說明它們的異同

  Attribute

  Attributes是Microsoft NET Framework文件的元數據可以用來向運行時描述你的代碼或者在程序運行的時候影響應用程序的行為

  Property

  屬性是面向對象編程的基本概念提供了對私有字段的訪問封裝在C#中以get和set訪問器方法實現對可讀可寫屬性的操作提供了安全和靈活的數據訪問封裝關於屬性的概念不是本文的重點而且相信大部分的技術人員應該對屬性有清晰的概念以下是簡單的屬性

  區別

  可以說兩者沒有可比性只不過我們國家的語言特點才引起的歧異其實只要記住Attributes是派生於SystemAttributes類之下它的主要作用是描述比如在某一個自定義控件中的屬性就是指Attribute

  如

  [DllImport(Userdll)]

  Attribute也有很多系統的默認屬性見下表

  預定義的屬性 有效目標 說明

  AttributeUsage Class 指定另一個屬性類的有效使用方式

  CLSCompliant 全部 指出程序元素是否與CLS兼容

  Conditional Method 指出如果沒有定義相關聯的字符串編譯器就可以忽略對這個方法的任何調用

  DllImport Method 指定包含外部方法的實現的DLL位置

  STAThread Method(Main) 指出程序的默認線程模型為STA

  MTAThread Method(Main) 指出程序的默認模型為多線程(MTA)

  Obsolete 除了AssemblyModuleParameter和Return 將一個元素標示為不可用通知用戶此元素將被從未來的產品

  ParamArray Parameter 允許單個參數被隱式地當作params(數組)參數對待

  Serializable ClassStructenumdelegate 指定這種類型的所有公共和私有字段可以被串行化

  NonSerialized Field 應用於被標示為可串行化的類的字段指出這些字段將不可被串行化

  StructLayout Classstruct 指定類或結構的數據布局的性質比如AutoExplicit或sequential

  ThreadStatic Field(靜態) 實現線程局部存儲(TLS)不能跨多個線程共享給定的靜態字段每個線程擁有這個靜態字段的副本

  而Property是指編程過程中的字段也即類的成員

  private int hour //定義私有變量表示小時外部是訪問不到的}

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

  {

  set { hour=value }

  get { return hour }

  }


From:http://tw.wingwit.com/Article/program/net/201311/11834.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.