gpt4 book ai didi

c# - 为什么是私有(private)二传手?

转载 作者:行者123 更新时间:2023-11-30 19:05:30 24 4
gpt4 key购买 nike

我想知道的是,当我们可以简单地将值直接分配给私有(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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com