分享
为什么问答平台  ›  专栏  ›  技术社区  ›  Bi-HanNoobSaibot

为什么要使用没有setter的getter?[复制品] - Why use a getter without a setter? [duplicate]

c#
  •  -2
  • Bi-HanNoobSaibot  · 技术社区  · 2 周前

    这个问题已经有了答案:

    不,这还没有得到回答,停止这么快的向下投票和阅读,这就是为什么没有一个设置者陪同一个getter。到目前为止你们发送的是一个能手和二传手是如何协同工作的,而不是为什么一个人会单独拥有它们。

    只有一个没有二传手陪伴的吸气剂有什么意义? 据我所知,我们使用getter获取值,使用setter验证插入的值。

    但这里的代码让我很困惑。

    private int Area { get { return _width * _height } }
    

    有什么意义? 没有验证任何内容。 为什么不创建一个包含值的字段,例如:

    private int area = _width * _height
    

    至少可以说是困惑。

    1 回复  |  直到 2 周前
        1
  •  0
  •   Sweeper    2 周前

    写这个而不是字段有很多好处:

    private int Area { get { return _width * _height; } }
    
    • Area 不必每次都手动更新 _width _height 变化。您可能会忘记在某些地方更新它。
    • 地区 不会意外地分配另一个(不正确的)值。如果你试图设置这个,编译器会阻止你。
    • 拥有一个额外的字段需要分配更多的内存 只要实例还活着 . 拥有这样一个getter只需要花费一点时间计算两个数的乘积 当您访问该属性时 . 因为这只是一个乘法,所以在这里花费的时间非常非常非常少。

    一般来说,您可能会看到一些属性都是get-only的类型,例如 DateTime . 这样做是为了使类型是不可变的,并且不可变是好的。见 Why do we need immutable class? .