C 中Property和Attribute的區別

2022-02-08 01:43:25 字數 1876 閱讀 3566

c#中property和attribute的區別

attribute 字段

property 屬性(get;set;)

屬性的正常寫:

private string name;

public string name

set

}簡寫:(自動屬性)

public string name

然後 編譯器 會轉換成 正常寫法

l  property就是訪問字段(成員變數,field)提供的一種方式(set/get)

l  property是c#中引入的一種語言特性,把c++中的一些程式設計技巧上公升到語法的地位。這種特性就是把類資料成員宣告為私有的,而提供公有的方法實現對他們的訪問。

l  property可以說是乙個物件導向的概念,提供了對私有欄位的訪問封裝,在c#中以get和set訪問器方法實現對可讀可寫屬性的操作,提供了安全和靈活的資料訪問封裝。比如:

publicclassrobot  

set

}  } 

l  property是指類向外提供的資料區域,是智慧型的字段,其中有get和set訪問器來完成欄位的取值和賦值。而attribute則是描述物件在編譯時或執行時屬性的。這兩者是有本質區別的,乙個是屬性,用於訪問類的字段,乙個是特性,用來標識類,方法等的附加性質。

attribute,還是property

attribute和property都能翻譯成「屬性」,有的地方用attribute表示「屬性」,有的地方又在用roperty,初學者常常在這兩個單詞間「迷失」,甚至認為二者沒有差別,是相同的。可是attribute不等於property。二者之間到底有何差別?  

我們從ooa/ood(object oriented analysis / object oriented design,物件導向分析和設計)說起。在ooa/ood中的使用attribute表示屬性,指物件(object)的特徵(feature)。我們在一些程式語言(如c#、delphi等)中遇見的「屬性」一詞,為何是property,而不是attribute呢?   為了理解這一點,我們把c++拽進來看看。ooa/ood中的attribute在c++中稱為member variable(成員變數),慢慢開始明白了吧。c++中的member variable在c#中能繼續延用,但有了乙個新的稱呼:field(字段)。看乙個簡單的c#示例:

public class student

set     

我們順便看看private和public:property本質上是一對get/set方法,能進行訪問控制,因而能設定為public;而按照ooa/ood原則,attribute不能設為public,而要設為private。

而c#中的「attribute」則完全和ooa/ood中的「attribute」 完全不一樣了,而是c#(net)全新引入的乙個概念。

msdn官方的解釋如下:

公共語言執行時允許你新增類似關鍵字的描述宣告,叫做attributes, 它對程式中的元素進行標註,如型別、字段、方法和屬性等。attributes和microsoft .net framework檔案的元資料儲存在一起,可以用來向執行時描述你的**,或者在程式執行的時候影響應用程式的行為。

說的通俗些attribute是類,不過是一模擬較特殊的類,attribute必須寫在一對方括號中,用來處理.net中多種問題:序列化、程式的安全特徵等等,在.net中的作用非同凡響。

C 中的域(Field)和屬性(Property)

c 中的域 field 和屬性 property 一般的命名習慣 field 對應的屬性 或許狹義地進行區分一下,get和 set的實現的稱為屬性,其他的變數稱為資料成員。c 將屬性從其他語言中的一種特殊約定提公升成為一種第一等 first class 的語言特性。屬性在使我們可以將資料成員暴露為公...

jQuery中prop 和 attr 區別

prop 方法是在jquery1.6中新新增的。我們知道 attr checked 獲取checkbox的checked屬性時選中的時候可以取到值,值為 checked 但沒選中獲取值就是undefined。而現在使用prop方法獲取屬性則統一返回true和false。那麼具體的用法是什麼,以下是個...

JS jQuery中attr和prop方法的區別

相比attr,prop是1.6.1才新出來的,兩者從中文意思理解,都是獲取 設定屬性的方法 attributes和properties 只是,window或document中使用.attr 方法在jquery1.6之前不能正常執行,因為window和document中不能有attributes。pr...