为什么在访问器中使用私有字段?

本文关键字:字段 访问 为什么 | 更新日期: 2023-09-27 18:17:07

私有字段只能在它存在的类中访问。

如果我们可以使用属性从类外访问私有字段,为什么还要使用私有字段呢?这不是违背了将战场私人化的目的吗?

为什么在访问器中使用私有字段?

简单地说,这个类将拥有完全的控制权:

SETTER :
要验证参数,设置数据替代,或者在最坏的情况下控制/抛出异常。

GETTER :
返回的值没有任何作用域问题,并保证:该值是适当的,默认的(如果没有设置),并且可以根据类对象的状态进行控制。

否则,类对象有可能仅仅通过重新定义就设置了错误的值,或者如果必须检查值,则有可能产生错误。

总而言之,数据值可以由类单独控制和隔离(或者另外通过将其设置为受保护,以便扩展程序类可以提供其他功能)。

带有私有支持字段的属性非常有用,因为您可以通过Accessors控制私有字段的访问方式

可以用一个简单的例子来解释。假设您希望将星期几表示为整数值,那么任何大于7的数字都没有任何意义。因此,您可以使用访问器来防止无效值。

int _dayOfWeek;
public int dayOfWeek
    {
        get
        {
            return _dayOfWeek;
        }
        set
        {
            if (value > 0 && value < 8) _dayOfWeek = value;
        }
    }

当然,你可以在你的访问器中有任何类型的逻辑,因此你可以更好地控制私有字段访问。如果您将字段声明为public,则无法控制其访问

使用getter和setter的想法是您已经抽象了一些逻辑,并且如果您意识到在访问字段时需要执行额外的逻辑,则使其更容易。