[問題] 關於屬性set/get

作者: skitty (aki)   2016-07-20 01:38:30
前輩好
在摸索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跟沒有的差異,看起來就是在建構子給初值)
作者: ssccg (23)   2016-07-20 02:46:00
首先屬性不只是提供對private成員的存取,而是一種對外部是像欄位、對內部是像方法的功能,內部怎麼實作是內部的事當然屬性也不一定要是public,只在內部用但是希望把存取控制邏輯集中在一個地方也是可以用問題一:不一定,這只是方便對應用的coding convention問題二:自動實作就是會自動產生對應欄位,不用再定義name
作者: Ninja5566 (苦味)   2016-07-20 08:06:00
你可以對get/set除了賦值之外作額外處理例如說可以加上dirty bit之類的功能或是使用上/下界,這些東西user都看不到也不須煩惱
作者: cmjer (民J)   2016-07-21 06:14:00
get set好處還有可以對外只設get 使用者就能唯讀而不去修改到

Links booklink

Contact Us: admin [ a t ] ucptt.com