property 與 attribute的區別

2022-04-23 09:26:29 字數 1531 閱讀 7525

property的解釋如下:property一般是指一對get,set方法,可以稱為是類的成員屬性,它大部分時候用來對類的成員變數進行讀取或賦值。

attributes的解釋如下:公共語言執行時允許你新增類似關鍵字的描述宣告,叫做attributes, 它對程式中的元素進行標註,如型別、字段、方法和屬性等。attributes和microsoft .net framework檔案的元資料儲存在一起,可以用來向執行時描述你的**,或者在程式執行的時候影響應用程式的行為。說的通俗些attribute是類,不過是一模擬較特殊的類,attribute必須寫在一對方括號中,用來處理net中多種問題:序列化、程式的安全特徵等等.

在翻譯方面,雖然都可以翻譯成「屬性」,但是為了區別開來,attributes也翻譯成「特性」.對於property,我們可以用attributes給它加上一些「特性」,比如是否可以序列化等。

對於property來說,和直接使用成員變數相比,好處很多,比如,可以在賦值或讀取值前進行資料校驗,可以很容易提供觸發事件的方法等等。當然也可以提供唯讀或只寫的屬性。而attributes的引入,使得我們在設計方法,屬性,事件等的時候,可以加入我們的一些資訊或約束。使得我們程式設計更加方便。

c#中property和attribute本是兩個非常好區分的概念,但翻譯過來都叫「屬性」,似乎讓人迷惑。造成property和attribute迷局的原因有兩個:1、不知道是中文翻譯詞彙的貧乏,還是英文詞彙的貧乏,導致兩者的混淆。於是有人建議把attribute翻譯成「特性」。這雖然在稱呼上把兩者區分開來,但並不能從本質上揭開迷局。2、在c#中引入了所謂「字段」(field),把ooa/ood中的attribute給替換了,而同時有引入了自己的「attribute」。

看看下面的**,你也許就了解 ,在c#中所謂「字段」的淵源了。

ooa/ood

c++.net(c#)

attribute

member

variable

field

method

member

function

method

原來「field」就是原來c++中的「member variable」 ,也就是ooa/ood中的「attribute」,按ooa/ood的規定理所當然「field」是只能用private限定了。下面來說說c#的「property」,先看看下面的**public class cnameset

}} 通過上面可以知道「property」其實本質就是乙個一對get/set方法(用public來限定),因此它就相當於c++的member function或者ooa/ood中的method,乙個比較特殊一點的方法。

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

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

attrib命令的使用

attrib命令的使用 命令列 attrib s h c windows run.sys 解 釋 attrib 命令名稱 s 取消檔案的系統屬性 h 取消檔案的隱藏屬性 c windows run.sys 操作的檔名 注意每項之前均用空格間隔。對於attrib命令的使用詳解如下所示 attrib命令...

property指令與 synthesize指令

property指令,就不需要宣告相應的例項變數了 property int age 代替下面兩行 int age getter void setage int age setter在 implementation中,用來自動生成setter和getter的實現.synthesize age age...

property與 synthesize的差別

property的使用方法 inte ce viewcontroller property nonatomic,retain nsarray arr end implementation viewcontroller void viewdidload void setarr nsarray arr ...