为什么要使用不带setter的getter?

时间:2019-05-04 09:55:12

标签: c#

不,这还没有得到回答,请不要这么快地接受否决和阅读,这就是为什么不让接传手陪同接球手的原因。到目前为止,你们发送的是吸气剂和塞脂剂如何协同工作,而不是为什么要单独使用它们。

仅使用不带有二传手的吸气剂有什么意义? 据我了解,我们使用getter获取值,使用setter验证插入的值。

但是我这里有这段代码,让我感到困惑。

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

有什么意义? 尚未进行任何验证。 为什么不仅仅创建一个包含值的字段,例如:

private int area = _width * _height

至少可以说困惑。

1 个答案:

答案 0 :(得分:0)

用它代替字段有很多优点:

private int Area { get { return _width * _height; } }
  • Area不必每次_width_height更改时都进行手动更新。您可能会忘记在某些地方进行更新。
  • Area不会被意外分配另一个(不正确的)值。如果您尝试设置此项,编译器将阻止您。
  • 拥有一个额外的字段需要分配更多的内存,只要实例还活着。拥有这样的吸气剂只需花费一点时间即可在访问属性时计算两个数字的乘积。由于这只是一个乘法,所以这里花费的时间真的很少。

更一般地说,您可能会看到一些属性均为只读的类型,例如DateTime。这样做是为了使类型不可变,并且不可变性良好。参见Why do we need immutable class?