屬性和字段的區別
在C#中,我們可以非常自由的、毫無限制的訪問公有字段,
但在一些場合中,我們可能希望限制只能給字段賦於某個范圍的值、或是要求字段只能讀或只能寫,
或是在改變字段時能改變對象的其他一些狀態,這些單靠字段是無法做到的,於是就有了屬性,
屬性中包含兩個塊:set和get,set塊負責屬性的寫入工作,get塊負責屬性的讀取工作。
在兩個塊中都可以做一些其他操作,如在set中驗證賦的值是否符合要求並決定是否進行賦值。
當缺少其中一塊時屬性就只能讀或只能寫,set和get塊中屬性必需有一個,因為即不能讀又不能寫的屬性是沒有意義的。
class MyClass
{
Private string name;
public string Name
{
get {return Name;}
set {Name=value;}
}
}
(1)屬性可以保證安全,當不在本類中使用時可以保證使用屬性名可以避免用字段的名字。
(2)屬性的set和get函數可以限制字段的一些功能,以達到某種目的。
如:
private int a=0;
public int A
{
get{return this.a;}
set
{
if(value >= 0 && value <= 100)
this.a=value;
else
throw new Exception("值的范圍不合法。");
}
}
(3)
屬性沒有存儲數據的功能,數據都存在字段中,所以只有修改字段的數據才能更改數據,修改屬性的值沒用。