仅在.NET中没有相应字段的情况下使用属性的缺点?

Ton*_*ich 7 .net c# vb.net

我的类只有public customerName {get; 组;}.它们是公开的,因为它们是在课外访问的.他们也可以在课堂上访问.它们提供良好的封装和更好的调试.如果我需要知道谁在访问它以及何时访问它,我可以在其中设置一个断点.

我的问题是,只使用没有相应字段的属性有什么缺点?我可以将setter或getter设为私有,内部..等等,这意味着我还可以灵活地在需要时进行范围设定.

Mar*_*ell 11

序列化BinaryFormatter- 如果您需要稍后将属性更改为"常规"属性,则会遇到问题,例如添加一些验证/事件/等等 - sinc BinaryFormatter使用字段名称.而且你不能复制它,因为编译器生成的字段名称不能写成合法的C#.

这是查看基于合同的序列化器的一个很好的理由.有关详细信息,请参阅此博客条目.


mnn*_*mnn 5

您无法创建真正的只读属性,因为您必须同时定义setter和getter.您只能使用私有setter从外部实现伪只读属性.

否则,如上所述,没有其他缺点.