一.欄位:
欄位是儲存類要滿足其設計所需要的資料,是與類相關的變數。
二.屬性:
1.在c#中可以自由的、毫無限制的訪問公有字段,但在一些場合中,我們需要只能給字段賦於某個範圍的值、或是要求字段只能讀或只能寫,或是在改變欄位時能改變物件的其他一些狀態,這些單靠欄位是無法做到的,於是就有了屬性。
2.屬性有兩個方法:get和set。
get訪問器返回與宣告的屬性相同的資料型別,表示的意思是呼叫時可以得到內部欄位的值或引用;
set訪問器沒有顯示設定引數,但它有乙個隱式引數,用關鍵字value表示,它的作用是呼叫屬性時可以給內部的字段或引用賦值。
簡單說就是get塊負責屬性的讀取工作,set塊負責屬性的寫入工作。在兩個塊中都可以做一些其他操作,如在set中驗證賦的值是否符合要求並決定是否進行賦值。當缺少其中一塊時屬性就只能讀或只能寫,set和get塊中屬性必需有乙個,因為即不能讀又不能寫的屬性是沒有意義的。
下面通過乙個例子來加深理解:
class product //商品類
set
}//可檢測賦值是否正確
public float price
get}
}
三.屬性與字段的聯絡:
屬性其實就是對私有欄位的讀取和寫入,以便做些公有字段無法完成的任務,它的使用方式和公有字段完全一樣,所以可以理解成屬性是為了滿足對公有欄位的特殊需求而產生的附屬品,使得在保證封裝性的基礎上實現了訪問私有成員的便捷性。屬性和字段都是類的成員。
當我們選擇使用屬性還是使用欄位時,主要看需求,如果不需設定訪問許可權、不需在賦值時檢測值是否滿足要求、不需要在賦值時修改物件其他一些狀態等特殊的需求時,使用公有字段即可,否則就使用屬性。
四.屬性與字段的區別:
1.通常欄位都是private,即私有的變數;而屬性都是public,即公有的變數。
2.欄位的名稱一般首字母小寫或前加「_」; 屬性的名稱一般首字母大寫。
3.屬性可以是抽象的,而字段要具有實際的意義。
4.屬性是類提供給外部使用的,可以通過" 物件.屬性" 設定或讀取 乙個值 ;欄位是類內部用來儲存資料的。
5.屬性可以進行資料繫結,保證安全,但沒有儲存功能。
C 屬性與字段
常規屬性,一般我們手動定義 私有欄位並定義屬性訪問該欄位,這就是常規屬性,private int age public int age set 自動屬性,一般我們做資料庫到c 集合的對映時只定義乙個屬性,public int age 1.自動實現的屬性必須同時宣告 get 和 set 訪問器。建立 ...
C 字段,屬性和屬性封裝字段
c 類成員包括 字段,屬性和方法。對於日常對於乙個類我們新增成員時會有幾種方法。如對於乙個person 類,我們對於其中乙個成員 性別 gender 進行定義,可以寫成 1,public string gender 2,public string gender 3,private string ge...
c 欄位和屬性
一 字段 field 可以在宣告欄位的同時賦給它乙個初始值。二 屬性 property 1 引入 假如將字段宣告為public,則在類的外部都可以對該字段進行訪問和更改,違背了類的封裝特性。如果宣告為private,則這種形式的封裝通常又過於徹底。例如,你可能希望欄位從外部唯讀,但從內部可以更改,但...