gpt4 book ai didi

c# - 为什么 C# 自动实现的属性是公共(public)的?

转载 作者:太空狗 更新时间:2023-10-29 20:52:01 26 4
gpt4 key购买 nike

在我看到的所有示例中,C# 自动实现的属性都是公开的,即使在 MSDN 文档示例中也是如此。我有 C++ 背景,一直被教导将成员数据设为私有(private)是个好主意,除非有充分的理由不这样做。

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

private Name { get; set; }

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

谢谢。

最佳答案

您是正确的,仅公开支持字段的自动实现的属性与公共(public)字段相比并没有太大的收获。

作为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.

但是,与公共(public)字段相比,自动实现的属性有一个优势,那就是它是一个不会破坏的更改,可以稍后修改实现。如果您有一个公共(public)字段,并且您的类之外的代码操纵该公共(public)字段,则您不能在该类的 future 版本中将其更改为私有(private)字段,否则任何其他接触该字段的代码都必须重新编译。相比之下,一旦拥有公共(public)属性,就可以在未来的版本中修改该属性的实现,客户端类可以继续使用它,零更改。

因此,对于现在具有简单的 getter 和 setter 实现但将来可能具有更复杂实现的属性,使用自动实现的属性很有用。

关于c# - 为什么 C# 自动实现的属性是公共(public)的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6823638/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com