服務(wù)熱線
153 8323 9821
在C#中,我們可以非常自由的、毫無限制的訪問公有字段,但在一些場(chǎng)合中,我們可能希望限制只能給字段賦于某個(gè)范圍的值、或是要求字段只能讀或只能寫,或是在改變字段時(shí)能改變對(duì)象的其他一些狀態(tài),這些單靠字段是無法做到的,于是就有了屬性,屬性中包含兩個(gè)塊:set和get,set塊負(fù)責(zé)屬性的寫入工作,get塊負(fù)責(zé)屬性的讀取工作。在兩個(gè)塊中都可以做一些其他操作,如在set中驗(yàn)證賦的值是否符合要求并決定是否進(jìn)行賦值。當(dāng)缺少其中一塊時(shí)屬性就只能讀或只能寫,set和get塊中屬性必需有一個(gè),因?yàn)榧床荒茏x又不能寫的屬性是沒有意義的。
程序代碼
//私有字段
private int _a;
private bool _b;
private int _c;
private int _d;
//屬性:
//可讀寫
public int a
{
set { _a = value; }
get { return _a; }
}
//只讀
public bool b
{
get { return _b; }
}
//可檢測(cè)賦值是否正確
public int c
{
set
{
if (value >= 1 && value <= 10)
_c = value;
else
throw new Exception("c的賦值范圍[1,10]");
}
}
//賦值時(shí)更改其他狀態(tài)
public int d
{
set
{
_d = value;
_b = true;//改變了_b的值
}
get { return _d; }
}
從例子中可看到屬性其實(shí)就是對(duì)私有字段的讀取和寫入,以便做些公有字段無法完成的任務(wù),他的使用方式和公有字段完全一樣,所以可以理解成屬性是為了滿足對(duì)公有字段的特殊需求而產(chǎn)生的附屬品。因而當(dāng)我們選擇使用屬性還是使用字段時(shí),主要看需求,如果不需設(shè)置訪問權(quán)限、不需在賦值時(shí)檢測(cè)值是否滿足要求、不需要在賦值時(shí)修改對(duì)象其他一些狀態(tài)等特殊的需求時(shí),使用公有字段即可,否則就使用屬性。
上一篇:泛型Dictionary的用法