作者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/cn.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