我们何时应该在C#中使用get和set属性?
答案 0 :(得分:6)
Properties可能就是你正在寻找的东西。关于为什么你会这么做以及为什么你不想使用房产进行讨论,请查看Jon Skeet的Why Properties Matter。
使用属性而不仅仅是暴露内部类数据的一个很好的理由显然是为了保护这些数据。您可以控制各个属性的访问权限以及验证正在设置的数据。您还可以实现计算出的属性来计算值,这与您班级用户的任何其他属性没有区别。
答案 1 :(得分:1)
根据MSDN上的Property Usage Guidelines:
当成员是逻辑数据成员时使用属性。在以下成员声明中,Name是一个属性,因为它是该类的逻辑成员。
在以下情况下使用方法:
- 此操作是转化,例如
Object.ToString
。- 操作非常昂贵,您希望与用户沟通,他们应该考虑缓存结果。
- 使用get访问器获取属性值会产生可观察到的副作用。
- 连续两次致电会员会产生不同的结果。
- 执行顺序很重要。请注意,应该能够以任何顺序设置和检索类型的属性。
- 该成员是静态的,但返回一个可以更改的值。
- 该成员返回一个数组。返回数组的属性可能会产生误导。通常需要返回内部数组的副本,以便用户无法更改内部状态。这与用户可以轻易地认为它是索引属性的事实相结合,导致代码效率低下。在下面的代码示例中,每次对Methods属性的调用都会创建数组的副本。因此,将在以下循环中创建2n + 1个阵列副本。
答案 2 :(得分:0)
为什么要使用属性而不是Get / Set方法有两个独立的(广义上说)原因: