程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> .net程序員的盲點(二) - 兩個"屬性"引起的歧義

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

編輯:關於.NET

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

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

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

Attribute

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

Property

屬性是面向 對象編程的基本概念,提供了對私有字段的訪問封裝,在中以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; }

  }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved