解讀.Net技術(shù)開(kāi)發(fā)中兩個(gè)“屬性”引起的歧異_.Net教程

      編輯Tag賺U幣
      教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!

      推薦:解讀.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)存釋放

      來(lái)源:模板無(wú)憂//所屬分類(lèi):.Net教程/更新時(shí)間:2009-07-13
      相關(guān).Net教程