作者skitty (aki)
看板C_Sharp
標題[問題] 關於屬性set/get
時間Wed Jul 20 01:38:30 2016
前輩好
在摸索C#的途中遇到set/get
爬了文
#1KYOXZgR 相關系列跟MSDN
還是似懂非懂,以下是我的理解跟疑問:
set/get是對private成員提供的寫入/讀取方式
使用方法上相當於public成員
可以直接用Person.Name="A"這樣做設定
也可以在set/get中做邏輯的判斷,跟一般自己寫方法是一樣的
問題一:屬性的命名似乎一定用private member 開頭小寫 對應 public member 開頭大寫
用大小寫做連結?
問題二:自動實作屬性 public string Name{get;set;}
就只是單純的表示可以用Person.Name="A"?
裡面並沒有name=value,name會被使用嗎?
(老實說MSDN上的範例我看不出來有get/set跟沒有的差異,看起來就是在建構子給初值)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.240.216.143
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_Sharp/M.1468949912.A.311.html
1F:→ ssccg: 首先屬性不只是提供對private成員的存取,而是一種對外部是07/20 02:46
2F:→ ssccg: 像欄位、對內部是像方法的功能,內部怎麼實作是內部的事07/20 02:47
3F:→ ssccg: 當然屬性也不一定要是public,只在內部用但是希望把存取控07/20 02:48
4F:→ ssccg: 制邏輯集中在一個地方也是可以用07/20 02:48
5F:→ ssccg: 問題一:不一定,這只是方便對應用的coding convention07/20 02:51
6F:→ ssccg: 問題二:自動實作就是會自動產生對應欄位,不用再定義name07/20 02:53
7F:推 Ninja5566: 你可以對get/set除了賦值之外作額外處理07/20 08:06
8F:→ Ninja5566: 例如說可以加上dirty bit之類的功能07/20 08:06
9F:→ Ninja5566: 或是使用上/下界,這些東西user都看不到也不須煩惱07/20 08:08
10F:推 cmjer: get set好處還有可以對外只設get 使用者就能唯讀而不去修07/21 06:14
11F:→ cmjer: 改到 07/21 06:14
先謝謝回答~
自己試了後清楚原來屬性跟本來的成員其實沒關係…
※ 編輯: skitty (114.136.169.140), 07/21/2016 18:59:14