加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 18:14:34 所属栏目:百科 来源:网络整理
导读:在我看到的所有示例中,即使在MSDN文档示例中,C#自动实现的属性也是公开的.来自C背景,我总是被告知,将成员数据设为私有是个好主意,除非有充分的理由不这样做. 为什么以下从未使用过(至少我从未见过它): private Name { get; set; } 我查看了MSDN文档并阅读了
在我看到的所有示例中,即使在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实现的属性使用自动实现的属性是有用的,但是将来可能会有更复杂的实现.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读