为什么C#自动实现的属性是公开的?

前端之家收集整理的这篇文章主要介绍了为什么C#自动实现的属性是公开的?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我看到的所有示例中,即使在MSDN文档示例中,C#自动实现的属性也是公开的.来自C背景,我总是被告知,将成员数据设为私有是个好主意,除非有充分的理由不这样做.

为什么以下从未使用过(至少我从未见过它):

private Name { get; set; }

我查看了MSDN文档并阅读了几个关于自动实现属性的教程,但似乎没有任何关于它们的优缺点的建议以及何时应该避免它们.自动实现的属性会破坏程序安全吗?有没有应该避免的情况?在哪些情况下他们是理想的选择?

谢谢.

解决方法

你是正确的,只是公开支持字段的自动实现的属性对公共字段没有多大好处.

Alan Kay said

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.

但是,公共字段上的自动实现属性有一个优点,那就是以后修改实现是一个不间断的更改.如果您有一个公共字段,并且您的类外部的代码操作该公共字段,则无法将其更改为该类的未来版本中的私有字段,否则将不得不重新编译接触该字段的任何其他代码.相比之下,一旦拥有了公共属性,就可以在将来的版本中修改属性的实现,并且客户端类可以继续使用它而不做任何更改.

因此,对于现在具有普通的getter和setter实现的属性使用自动实现的属性是有用的,但是将来可能会有更复杂的实现.

猜你在找的C#相关文章