我想知道的是,当我们可以简单地将值直接分配给私有(private)对象时,为什么我们需要私有(private) setter?考虑以下代码:
private int counter = 0;
public int Counter {
get {
return counter;
}
}
在上面的上下文中,我看不出拥有私有(private) setter (Counter = 1) 与将值直接分配给私有(private)对象 (counter = 1) 之间有什么区别。
我考虑使用私有(private) setter 的唯一原因是需要触发更改通知/事件时。除此之外,我们甚至还需要一个私有(private) setter 吗?
最佳答案
如果您使用自动属性,则看不到背景字段:
public int Counter { get; private set; }
这使您可以将它设为 private for set 和 public for get,而无需自己编写支持字段。
即使您使用的是支持字段,有时您仍想使用该属性,而不是该字段。属性 setter 实际上可以包含其他可能适合调用的逻辑(验证/更改通知/等),但您可能希望将对此的访问限制在您的类中。
关于c# - 为什么是私有(private)二传手?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20872926/