解讀.Net技術(shù)開(kāi)發(fā)中兩個(gè)“屬性”引起的歧異_.Net教程
推薦:解讀.net垃圾回收和CLR 4.0對(duì)垃圾回收所做的改進(jìn)之一A survey of garbage collection and the changes CLR 4.0 brings in - series of what is new in CLR 4.0 導(dǎo)言Introduction 垃圾回收(Garbage Collection)在.net中是一個(gè)很重要的機(jī)制. 本文將要談到CLR4.0對(duì)垃圾回收做了哪些改進(jìn). 為了更好地理解這些改進(jìn),
對(duì)于property和attribute這兩個(gè)名詞都叫“屬性”的問(wèn)題,來(lái)源于國(guó)內(nèi)it書(shū)籍翻譯界的疏忽。
其實(shí)它們來(lái)源于兩個(gè)不同的領(lǐng)域,attribute屬于OOA/OOD的概念,而property屬于編程語(yǔ)言中的概念。下面我們來(lái)說(shuō)明它們的異同。
Attribute
Attributes是Microsoft .NET Framework文件的元數(shù)據(jù),可以用來(lái)向運(yùn)行時(shí)描述你的代碼,或者在程序運(yùn)行的時(shí)候影響應(yīng)用程序的行為。
Property
屬性是面向?qū)ο缶幊痰幕靖拍睿峁┝藢?duì)私有字段的訪問(wèn)封裝,在C#中以get和set訪問(wèn)器方法實(shí)現(xiàn)對(duì)可讀可寫(xiě)屬性的操作,提供了安全和靈活的數(shù)據(jù)訪問(wèn)封裝。關(guān)于屬性的概念,不是本文的重點(diǎn),而且相信大部分的技術(shù)人員應(yīng)該對(duì)屬性有清晰的概念。以下是簡(jiǎn)單的屬性
區(qū)別
可以說(shuō)兩者沒(méi)有可比性,只不過(guò)我們國(guó)家的語(yǔ)言特點(diǎn)才引起的歧異,其實(shí)只要記住Attributes是派生于System,Attributes類(lèi)之下,它的主要作用是描述,比如在某一個(gè)自定義控件中的“屬性”就是指Attribute,
如
[DllImport("User32.dll")]
Attribute也有很多系統(tǒng)的“默認(rèn)”屬性,見(jiàn)下表
預(yù)定義的屬性 有效目標(biāo) 說(shuō)明
AttributeUsage Class 指定另一個(gè)屬性類(lèi)的有效使用方式
CLSCompliant 全部 指出程序元素是否與CLS兼容
Conditional Method 指出如果沒(méi)有定義相關(guān)聯(lián)的字符串,編譯器就可以忽略對(duì)這個(gè)方法的任何調(diào)用
DllImport Method 指定包含外部方法的實(shí)現(xiàn)的DLL位置
STAThread Method(Main) 指出程序的默認(rèn)線程模型為STA
MTAThread Method(Main) 指出程序的默認(rèn)模型為多線程(MTA)
Obsolete 除了Assembly、Module、Parameter和Return 將一個(gè)元素標(biāo)示為不可用,通知用戶此元素將被從未來(lái)的產(chǎn)品
ParamArray Parameter 允許單個(gè)參數(shù)被隱式地當(dāng)作params(數(shù)組)參數(shù)對(duì)待
Serializable Class、Struct、enum、delegate 指定這種類(lèi)型的所有公共和私有字段可以被串行化
NonSerialized Field 應(yīng)用于被標(biāo)示為可串行化的類(lèi)的字段,指出這些字段將不可被串行化
StructLayout Class、struct 指定類(lèi)或結(jié)構(gòu)的數(shù)據(jù)布局的性質(zhì),比如Auto、Explicit或sequential
ThreadStatic Field(靜態(tài)) 實(shí)現(xiàn)線程局部存儲(chǔ)(TLS)。不能跨多個(gè)線程共享給定的靜態(tài)字段,每個(gè)線程擁有這個(gè)靜態(tài)字段的副本
而Property是指編程過(guò)程中的字段,也即類(lèi)的成員。
如:
private int hour; //定義私有變量表示"小時(shí)",外部是訪問(wèn)不到的.}
public int Hour// 定義Hour程序接口
{
set { hour=value; }
get { return hour; }
}
分享:解讀.net垃圾回收和CLR 4.0對(duì)垃圾回收所做的改進(jìn)之二A survey of garbage collection and the changes CLR 4.0 brings in Part 2 - series of what is new in CLR 4.0 接前篇Continue the previous post .net垃圾回收和CLR 4.0對(duì)垃圾回收所做的改進(jìn)之一 CLR4.0所帶來(lái)的變化仍然沒(méi)有在這篇,請(qǐng)看下篇。 內(nèi)存釋放
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發(fā)送Email實(shí)例(可帶附件)
- js實(shí)現(xiàn)廣告漂浮效果的小例子
- asp.net Repeater 數(shù)據(jù)綁定的具體實(shí)現(xiàn)
- Asp.Net 無(wú)刷新文件上傳并顯示進(jìn)度條的實(shí)現(xiàn)方法及思路
- Asp.net獲取客戶端IP常見(jiàn)代碼存在的偽造IP問(wèn)題探討
- VS2010 水晶報(bào)表的使用方法
- ASP.NET中操作SQL數(shù)據(jù)庫(kù)(連接字符串的配置及獲取)
- asp.net頁(yè)面?zhèn)髦禍y(cè)試實(shí)例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲(chǔ)過(guò)程實(shí)現(xiàn)分頁(yè)示例代碼
.Net教程Rss訂閱編程教程搜索
.Net教程推薦
- 將文件上傳、下載(以二進(jìn)制流保存到數(shù)據(jù)庫(kù))實(shí)現(xiàn)代碼
- DataGrid中CheckBox綁定bool屬性來(lái)進(jìn)行選中判斷
- 淺析從零開(kāi)始學(xué)習(xí)jQuery
- 詳解.NET中的代碼動(dòng)態(tài)編譯
- ASP.NET26個(gè)常用性能優(yōu)化方
- 揭秘ASP.NET常用的26個(gè)優(yōu)化性能方法
- ASP.NET中后臺(tái)注冊(cè)js腳本使用的方法對(duì)比
- 如何在GridView數(shù)據(jù)源為空時(shí)也顯示表頭
- 教你在asp.net中動(dòng)態(tài)變更CSS
- 談對(duì)程序開(kāi)發(fā)中異常的處理
- 相關(guān)鏈接:
- 教程說(shuō)明:
.Net教程-解讀.Net技術(shù)開(kāi)發(fā)中兩個(gè)“屬性”引起的歧異。