C 中的變數 字段 域 屬性 屬性過程

2021-05-24 06:03:05 字數 2519 閱讀 4695

在c#中:

域:      表示與物件或類相關聯的變數,修飾符不論是不是public。(與字段類似)

字段:   表示與物件或類相關聯的變數。通常來講修飾符是public的成員變數稱為字段,而private更適合說是區域性變數。(與域類似)

屬性:   表示域或字段的自然擴充套件,使得在保證封裝性的基礎上實現了訪問私有成員的便捷性。

attributes field-modifiers type variable-declarators;

域的修飾符field-modifiers可以是:new、public、protected、internal、private、static、readonly。實際上,域相當於c++中的簡單成員變數。在下面的**中,類a包含了三個域:公有的x和y,以及私有的z。

class a

字段

欄位是與物件或類相關聯的變數。   

當乙個字段宣告中含有static修飾符時,由該宣告引入的字段為靜態字段(static   field)。它只標識了乙個儲存位置。不管建立了多少個類例項,靜態欄位都只會有乙個副本。   

當乙個字段宣告中不含有static修飾符時,由該宣告引入的字段為例項字段(instance   field)。類的每個例項都包含了該類的所有例項欄位的乙個單獨副本。   

在下面的示例中,color類的每個例項都有r,g,b例項欄位的不同副本,但是black,white,red,green和blue等靜態字段只有乙個副本:   

public   class   color   

}   

如示例所示,通過readonly修飾符宣告唯讀字段。給readonly欄位的賦值只能作為宣告的組成部分出現,或者在同一類中的例項建構函式或靜態建構函式中出現。

屬性

為了類的封裝性,一般是把字段設為private, 把屬性設為公有來操作字段。

屬性(property)是字段的自然擴充套件,兩者都是具有關聯型別的命名成員,而且訪問欄位和屬性的語法是相同的。然而,屬性與字段

不同,不表示儲存位置。相反,屬性有訪問器(accessor),這些訪問器指定在它們的值被讀取或寫入時需執行的語句。 

屬性的宣告類似於字段,不同之處在於屬性的宣告以定界符{}之間的get訪問器和/或set訪問器結束,而不是分號。同時包含get

訪問器和set訪問器的屬性稱為讀寫屬性(read-write   property)。只具有get訪問器的屬性稱為唯讀屬性(read-only 

property)。只具有set訪問器的屬性稱為只寫屬性(write-only property)。

get訪問器相當於乙個具有屬性型別返回值的無引數方法。除了作為賦值的目標外,當在表示式中引用屬性時,會呼叫該屬性的get訪問器以計算該屬性的值。

set訪問器相當於乙個具有單個名為value的引數和無返回型別的方法。

當乙個屬性作為賦值的目標,或者作為++或--運算子的運算元被引用時,就會呼叫set訪問器,所傳遞的自變數將提供新值。

list類宣告了兩個屬性count和capacity,依次是唯讀和只寫的。下面是使用這些屬性的示例:  

list   names   =   new   list();   

names.capacity   =   100;                     //呼叫set訪問器   

int   i   =   names.count;                       //呼叫get訪問器   

int   j   =   names.capacity;               //呼叫get訪問器  

與字段和方法類似,對於例項屬性和靜態屬性,c#兩者都支援。靜態屬性是宣告中具有static修飾符,而例項屬性則沒有。  

屬性的訪問器可以是虛擬的。當屬性宣告中包含virtual,abstract,override修飾符時,它們將運用到屬性訪問器。

來自msdn中的內容:

屬性與字段

屬性與字段都可在物件中儲存和檢索資訊。它們的相似性使得在給定情況下很難確定哪個是更好的程式設計選擇。

在以下情況下使用屬性過程:

1. 需要控制設定或檢索值的時間和方式時。

2. 屬性有定義完善的一組值需要進行驗證時。

3. 設定值導致物件的狀態發生某些明顯的變化(如 isvisible 屬性)。

4. 設定屬性會導致更改其他內部變數或其他屬性的值時。

5.必須先執行一組步驟,然後才能設定或檢索屬性時。

在以下情況下使用字段:

1. 值為自驗證型別時。例如,如果將 true 或 false 以外的值賦給 boolean 變數,就會發生錯誤或自動資料轉換。

2. 在資料型別所支援範圍內的任何值均有效時。single 或 double 型別的很多屬性屬於這種情況。

3. 屬性是 string 資料型別,且對於字串的大小或值沒有任何約束時。

C 字段,屬性和屬性封裝字段

c 類成員包括 字段,屬性和方法。對於日常對於乙個類我們新增成員時會有幾種方法。如對於乙個person 類,我們對於其中乙個成員 性別 gender 進行定義,可以寫成 1,public string gender 2,public string gender 3,private string ge...

C 中的字段,屬性,常量

一種表示與物件或型別 類或結構體 關聯的變數,舊稱成員變數 attributes field modifiers type variable declarators 字元宣告,括號表示可選字段修飾符field modifier關於internal 字段初始值 隱式初始化,字段獲得該型別預設值 一種用...

C 中的域與屬性

c 中類成員變數的定義分為兩種 域 field 與屬性 property 屬性為公有變數,以get,set訪問器進行訪問,域多為私有變數,非get set訪問器進行訪問,如以下類的的域為成員name,而屬性為val.class customer endregion 當我們獲得乙個類物件時,我們就可以...