不卡AV在线|网页在线观看无码高清|亚洲国产亚洲国产|国产伦精品一区二区三区免费视频

學習啦>知識大全>知識百科>公共基礎(chǔ)知識>

.net屬性和特性的區(qū)別

時間: 映芳735 分享

  特性

  MADN的定義為:公共語言運行時允許添加類似關(guān)鍵字的描述聲明,叫做attributes, 它對程序中的元素進行標注,如類型、字段、方法和屬性等。Attributes和Microsoft .NET Framework文件的元數(shù)據(jù)保存在一起,可以用來向運行時描述你的代碼,或者在程序運行的時候影響應用程序的行為。

  我們簡單的總結(jié)為:定制特性attribute,本質(zhì)上是一個類,其為目標元素提供關(guān)聯(lián)附加信息,并在運行期以反射的方式來獲取附加信息。具體的特性實現(xiàn)方法,在接下來的討論中繼續(xù)深入。

  屬性

  屬性是面向?qū)ο缶幊痰幕靖拍?,提供了對私有字段的訪問封裝,在C#中以get和set訪問器方法實現(xiàn)對可讀可寫屬性的操作,提供了安全和靈活的數(shù)據(jù)訪問封裝。關(guān)于屬性的概念,不是本文的重點,而且相信大部分的技術(shù)人員應該對屬性有清晰的概念。

  區(qū)別

  通過對概念的澄清和歷史的回溯,我們知道特性和屬性只是在名稱上有過糾葛,在MSDN上關(guān)于attribute的中文解釋甚至還是屬性,但是我同意更通常的稱呼:特性。在功能上和應用上,二者其實沒有太多模糊的概念交叉,因此也沒有必要來比較其應用的異同點。本文則以特性的概念為重點,來討論其應用的場合和規(guī)則。

  我理解的定制特性,就是為目標元素,可以是數(shù)據(jù)集、模塊、類、屬性、方法、甚至函數(shù)參數(shù)等加入附加信息,類似于注釋,但是可以在運行期以反射的方式獲得。定制特性主要應用在序列化、編譯器指令、設(shè)計模式等方面。

  常用特性

  常用特性,也就是.NET已經(jīng)提供的固有特性,事實上在.NET框架中已經(jīng)提供了豐富的固有特性由我們發(fā)揮,以下精選出我認為最常用、最典型的固有特性做以簡單討論,當然這只是我的一家之言,亦不足道。我想了解特性,還是從這里做為起點,從.NET提供的經(jīng)典開始,或許是一種求知的捷徑,希望能給大家以啟示。

  AttributeUsage

  AttributeUsage特性用于控制如何應用自定義特性到目標元素。關(guān)于AttributeTargets、AllowMultiple、Inherited、ValidOn,請參閱示例說明和其他文檔。我們已經(jīng)做了相當?shù)慕榻B和示例說明,我們還是在實踐中自己體會更多吧。

  Flags

  以Flags特性來將枚舉數(shù)值看作位標記,而非單獨的數(shù)值。

  Serializable

  Serializable特性表明了應用的元素可以被序列化(serializated),序列化和反序列化是另一個可以深入討論的話題,在此我們只是提出概念,深入的研究有待以專門的主題來呈現(xiàn),限于篇幅,此不贅述。

  Conditional

  Conditional特性,用于條件編譯,在調(diào)試時使用。注意:Conditional不可應用于數(shù)據(jù)成員和屬性。

  還有其他的重要特性,包括:Description、DefaultValue、Category、ReadOnly、BrowerAble等,有時間可以深入研究。

530027