【问题标题】:Why to use getter and setter methods to set class properties? [duplicate]为什么要使用 getter 和 setter 方法来设置类属性? [复制]
【发布时间】:2011-07-19 09:59:59
【问题描述】:

可能重复:
Why use getters and setters?

在 C#(ASP.NET) 中,我们使用 getter 和 setter 方法来设置私有变量的属性,但如果我们将该变量声明为 public,则可以完成同样的事情。因为一方面我们通过将其声明为私有来限制用户访问该变量,另一方面我们允许用户通过使用 getter 和 setter 属性来访问这些属性。我无法理解它的意义。

【问题讨论】:

  • 控制一个类的变量在另一个类中的修改,通过将变量设为私有,我们可以控制值被修改的方式,例如,如果在另一个类中,如果变量被修改为负数,使用setter 我们可以抛出异常以不设置为负数。为此,必须将变量转换为私有变量,并且要访问该私有变量,我们可以使用 getter。

标签: c# asp.net


【解决方案1】:

通过使用 getter 和 setter,您可以隐藏类的内部实现。这意味着在 setter 的 set 方法中,您可以运行整个算法来将输入数据解析为您的内部数据结构。您可以稍后更改您的实施,而不会对您的用户产生任何影响。

现在,如果您将内部成员公开为公开,则无法再隐藏它们,并且您对类内部定义所做的任何更改都可能会破坏用户的使用。

【讨论】:

    【解决方案2】:

    在 C# 中,首选方法是使用Properties

    这样做的好处是它公开了一种获取(或设置)数据的便捷方式,但不公开类的实现细节。

    一个属性,或者一个getter或setter,可以实现额外的逻辑,例如:

    • 根据一些私有数据计算一个值(而不是直接返回一个值)
    • 检查和验证提供的数据(以防止溢出或超出范围输入)。

    通过这样做,您可以将类的接口与实现分开,从而使您可以轻松地更改代码在内部的工作方式,而不是公开访问的方式。

    【讨论】:

      【解决方案3】:

      因为它允许您在继承的类中覆盖这些属性,在以后添加验证/INotifyProperty 更改的处理程序,并保留版本之间的二进制兼容性

      【讨论】: