在我看到的所有示例中,即使在MSDN文档示例中,C#自动实现的属性也是公开的.来自C背景,我总是被告知,将成员数据设为私有是个好主意,除非有充分的理由不这样做.
为什么以下从未使用过(至少我从未见过它):
private Name { get; set; }
我查看了MSDN文档并阅读了几个关于自动实现属性的教程,但似乎没有任何关于它们的优缺点的建议以及何时应该避免它们.自动实现的属性会破坏程序安全吗?有没有应该避免的情况?在哪些情况下他们是理想的选择?
谢谢.
解决方法
你是正确的,只是公开支持字段的自动实现的属性对公共字段没有多大好处.
But most people who use setters simply use them to simulate direct assignments to interior variables,and this violates the spirit and intent of real OOP.
但是,公共字段上的自动实现属性有一个优点,那就是以后修改实现是一个不间断的更改.如果您有一个公共字段,并且您的类外部的代码操作该公共字段,则无法将其更改为该类的未来版本中的私有字段,否则将不得不重新编译接触该字段的任何其他代码.相比之下,一旦拥有了公共属性,就可以在将来的版本中修改该属性的实现,并且客户端类可以继续使用它而不做任何更改.