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

每当对属性的可信度有疑问时,我都会看到大多数讨论都是围绕函数/方法与属性进行的。但是我也想知道直接在关联的私有字段和公共字段之间直接使用属性的令人信服的理由,以防万一大多数常见的获取/设置行为没有其他处理,我的意思是


public string CustomerName;


private string customerName;

public string CustomerName

{

get{return customerName;}

set(string value){this.customerName=value;}

}


墨色风雨
浏览 290回答 3
3回答

蝴蝶不菲

如果以后需要添加其他行为,添加断点,则可以得到源/二进制兼容性,并且从理论上讲它更干净(关心行为,而不是存储机制)。请注意,您不需要C#3中的后一个块的全部:public string CustomerName { get; set; }

回首忆惘然

这主要是Java中的错误。在许多其他语言(Python,Delphi,Groovy)中,除非您提供代码,否则编译器将为您生成getter和setter 。这意味着您可以在Groovy中使用“公共”字段,编译器将静默生成并调用setter / setter。如果您需要在换田时进行其他操作,可以引入专门的二传手,一切都会正常进行。这是现实与设计冲突的事情之一。Java设计人员不希望编译器执行您看不到的任何事情。很多年前看来这是一个好主意,但结果并不太好。
打开App,查看更多内容
随时随地看视频慕课网APP