回覆列表
-
1 # 萌無敵北島清茶
-
2 # 扶尾貓秋風水清
get和set是c#類中屬性的封裝將它隱藏
publicstringflag{set{FLAG=value;}get{returnFLAG;}}定義一個變數FLAG,再定義一個公共成員變數flag(可以再別的類中對flag進行賦值,如obj.flag="aa"),set{}將“aa”賦給value,再將value賦給變數FLAG,FLAG=“aa“,再用get{}返回給flag;
而且可以對變數進行處理.增加安全性
getset那就是在{}外面一個提取a的直一個是給a賦值
getset使用方法
stringa;//成員變數
publicstringfuzhi{set{a=value;}//設定值value是自動接受資料的
屬性中如果只有set,則是隻寫屬性;
如果既有get又有set則是可寫屬性;
且get和set分別可以用不同的修飾符。
修飾符分別代表的含義:
private:私有類內部可訪問;
public:全域性;
internal:程式集內部可訪問;
protected:受保護成員在它的類中可訪問並且可由派生類訪問。
getset是用來擴充套件域的,也就是C裡的變數,只是用起來更加靈活而己。看以下程式碼:
usingSystem;
publicclasscls
{
privateintbook;//定義一個域(也可以叫變數,只是面向對像裡都這麼叫,使用起來也更加方便)
publicintBook
{
get
{
Console.WriteLine("dsf");
returnbook;
}
set
{
Console.WriteLine("aaa");
book=value;
}
}
publicstaticvoidMain()
{
clsobj=newcls();
obj.Book=120;//注意這一句
Console.WriteLine(obj.Book);
}
}
執行結果為:
aaa
dsf
120
也就是先把120賦值給value(相當一個儲存空間),然後再用get{}返回給Book,實際上也就是一次改變變數值的過程。
那你也許會問為什麼要這麼複雜呢?因為這是用了巢狀,所以可以更加方便的寫入其它語句,在以後你就應該學到了。
如果沒有:
obj.Book=120;
請想一想會是什麼結果呢?
只是一個取值過程:get{}而沒有執行set{}
結果為:
dsf
0