C# 为什么使用getter而不使用setter?

C# 为什么使用getter而不使用setter?,c#,C#,不,这还没有得到回答,停止这么快的向下投票和阅读,这就是为什么不有一个二传手陪同一个获得者。到目前为止,你们发送的信息是一个能手和二传手是如何协同工作的,而不是为什么一个人会单独拥有他们 只有一个getter而没有setter,这有什么意义? 据我所知,我们使用getter获取值,使用setter验证插入的值 但我这里的代码让我感到困惑 private int Area { get { return _width * _height } } 重点是什么? 没有验证任何内容。 为什么不创建一个包

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

只有一个getter而没有setter,这有什么意义? 据我所知,我们使用getter获取值,使用setter验证插入的值

但我这里的代码让我感到困惑

private int Area { get { return _width * _height } }
重点是什么? 没有验证任何内容。 为什么不创建一个包含该值的字段,例如:

private int area = _width * _height

至少可以说是令人困惑的。

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

private int Area { get { return _width * _height; } }
区域不必在每次宽度或高度更改时手动更新。在某些地方,您可能会忘记更新它。 不会意外地为面积分配另一个不正确的值。如果您试图设置此选项,编译器将阻止您。 有一个额外的字段需要分配更多的内存,只要实例是活动的。拥有这样一个getter只需要在访问属性时计算两个数字的乘积时花费一点时间。因为这只是一个乘法运算,所以它所花费的时间非常非常少。
更一般地说,您可能会看到一些属性都是仅get的类型,例如DateTime。这样做是为了使类型是不可变的,并且不可变性是好的。请参阅。

请看这里:用简单的术语来说,该变量不会被更新。。当被调用时,作为getter将被重新计算。-Adriani6,很好的观点。这就是为什么,谢谢你。另外,每个实例都需要更多的内存,只是为了冗余信息。如果冗余信息的计算成本很高,但肯定不总是这样,那么有时候这是合适的。getter和setter除了获取和设置信息外,还可以用于各种目的。验证是一个,设置依赖字段是另一个。。没有setter可以使变量只读。