C# GET 和 SET屬性作用
private int __Old;
public int Old{
get{return __Old;}
set{__Old = value;}
}
但是如果你這樣寫就不一樣了.
private int __Old;
public int Old{
get{return __Old;}
set{// 這裡加入了驗證程式碼
if(value<0)
throw new ArgumentOutException("value", "輸入值不能小於0");
__Old = value;
}
上面的例子說明屬性中可以新增些程式碼進行處理. 也可以設定的訪問的許可權等.
在類中定義一個屬性
public class Student
{
private string name
public string Name
{
set{name=value;}//這裡是給私有屬性name賦值
get{return name;}//這裡取出私有屬性name的值
}
}
c#在定義類時,通常要把類中宣告的物件封裝起來,使得外界不能訪問這個屬性。上述程式碼中如果去掉set部分,則外界只能讀取name的值,如果去掉get部分,則只能給name賦值。這樣就可以控制外界對私有屬性name的訪問許可權了,這種寫法是C#的一個特性。
當然你也可以通過自己建立函式來對name進行取值和賦值,但這樣就顯得比較麻煩了。
屬性與普通變數不同就在於, 普通變數就是放在屋子裡的東西, 是什麼樣明明白白. 而屬性則是在屋子的門口放了個守門人, 你拿東西放東西要經過他.
這個守門人就是屬性訪問器, 拿東西就是 get, 放東西就是 set. 怎麼拿怎麼放是它說了算, 雖然你覺得好像就是直接拿直接放差不多.
GET SET 就是對外的介面 ,一般在例項中訪問成員資料需要這個成員資料的訪問方式為PUBLIC ,現在C#很高階了,GET 就是獲取,SET 就是設定,但是它提供了跟好的收縮性,對GET 和SET 可以單獨設定訪問許可權 比如你對某個成員資料只能讀取或者只寫,或者只有派生類可以訪問等。。。 相對以前來說,沒有屬性訪問器,需要通過函式來呼叫私有成員資料,屬性提供了高效的訪問模式和簡單的書寫。
就是為了安全啊~~
欄位是你具體要操作的資料所以他的值不能出錯,可是你又不能避免使用者犯錯~~
為了安全就用屬性來給欄位賦值,因為 在set中你可以對資料的安全進行驗證,
get就更簡單了驗證完資料了就要把值給了欄位所以要get
set的中文意思是“設定”;
get的中文意思是“獲得”;
補充:
get 和 set 會在相應的時候自動呼叫
主要是為了隱藏程式內的資料結構時用
get是獲取該屬性的值,
set設定該屬性的值。
在用set時有一個特殊的變數value
就是設定屬性時的值
value 隱式引數,用於設定訪問器以及新增或移除事件處理程式。
對類的屬性進行 設定
比如用類名.屬性=“”賦值 set作用
變數=類名.屬性 取值 get 作用