[问题] 关于属性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