看板 C_Sharp 關於我們 聯絡資訊
前輩好 在摸索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://www.ptt.cc/bbs/C_Sharp/M.1468949912.A.311.html
ssccg: 首先屬性不只是提供對private成員的存取,而是一種對外部是07/20 02:46
ssccg: 像欄位、對內部是像方法的功能,內部怎麼實作是內部的事07/20 02:47
ssccg: 當然屬性也不一定要是public,只在內部用但是希望把存取控07/20 02:48
ssccg: 制邏輯集中在一個地方也是可以用07/20 02:48
ssccg: 問題一:不一定,這只是方便對應用的coding convention07/20 02:51
ssccg: 問題二:自動實作就是會自動產生對應欄位,不用再定義name07/20 02:53
Ninja5566: 你可以對get/set除了賦值之外作額外處理07/20 08:06
Ninja5566: 例如說可以加上dirty bit之類的功能07/20 08:06
Ninja5566: 或是使用上/下界,這些東西user都看不到也不須煩惱07/20 08:08
cmjer: get set好處還有可以對外只設get 使用者就能唯讀而不去修07/21 06:14
cmjer: 改到 07/21 06:14
先謝謝回答~ 自己試了後清楚原來屬性跟本來的成員其實沒關係… ※ 編輯: skitty (114.136.169.140), 07/21/2016 18:59:14