雖然知道這麼用,但一直沒用過,等到用的時候發現不會寫了,查了好久才找到~~~。
以前記得論壇有過一個帖子是專門討論C#中屬性的用處的
今天翻閱《C#高級編程》的時候又發現一條
C#允許給屬性的get和set訪問器設置不同的訪問修飾符,所以屬性可以有公共的get訪問器和私有的或者是受保護的set訪問器。這有助於控制屬性的設置方式或者時間。
可惜的是書上給的例子完全錯了,就是很普通的屬性設置
{
get { return _name; }
set { _name = value; }
}
後來經過自己嘗試,發現正確的用法是這樣的
{
get { return _name; }
protected set { _name = value; }//注意看訪問級別,和外層的不一樣哦}
使用的時候 要主意以下幾點:
1、定時屬性的時候,外層一定要有訪問級別修飾符(就是public string Name)這裏啦
2、在定義get和set訪問級別的時候,只能爲其中一個單獨設置
意思就是說不能在get前邊來一個public,然後在set前邊再來一個修飾符,兩個當中只有一個能設置的哦
別扔轉頭,什麼,不就是想給set和get兩個設置不同的訪問級別嘛,你以爲第一條上說的外層的修飾符是幹嘛用的?
看例子,get前邊沒寫訪問修飾符吧?這樣它的權限默認是外層的權限,也就是public啦
set的權限我就不用再說了,前邊白紙黑字,一個 protected 在那大大的豎着呢
3、外層的訪問權限一定要比內層的更爲寬鬆,這個也要主意,還說上邊的例子
爲了實現同樣的訪問控制級別,如果你寫成
{
public get { return _name; } //內層public
set { _name = value; }
}