为了账号安全,请及时绑定邮箱和手机立即绑定

财产(无需额外处理)与公共领域

财产(无需额外处理)与公共领域

C#
墨色风雨 2019-11-04 11:02:02
每当对属性的可信度有疑问时,我都会看到大多数讨论都是围绕函数/方法与属性进行的。但是我也想知道直接在关联的私有字段和公共字段之间直接使用属性的令人信服的理由,以防万一大多数常见的获取/设置行为没有其他处理,我的意思是public string CustomerName;与private string customerName;public string CustomerName{get{return customerName;}set(string value){this.customerName=value;}}
查看完整描述

3 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

如果以后需要添加其他行为,添加断点,则可以得到源/二进制兼容性,并且从理论上讲它更干净(关心行为,而不是存储机制)。


请注意,您不需要C#3中的后一个块的全部:


public string CustomerName { get; set; }


查看完整回答
反对 回复 2019-11-04
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

这主要是Java中的错误。在许多其他语言(Python,Delphi,Groovy)中,除非您提供代码,否则编译器将为您生成getter和setter 。

这意味着您可以在Groovy中使用“公共”字段,编译器将静默生成并调用setter / setter。如果您需要在换田时进行其他操作,可以引入专门的二传手,一切都会正常进行。

这是现实与设计冲突的事情之一。Java设计人员不希望编译器执行您看不到的任何事情。很多年前看来这是一个好主意,但结果并不太好。


查看完整回答
反对 回复 2019-11-04
  • 3 回答
  • 0 关注
  • 289 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信