何时在C#中使用get和set属性

use*_*079 6 c#

我们什么时候应该在C#中使用get和set属性?

Cod*_*ody 6

如果您决定需要获取和设置方法,属性可能是您正在寻找的.关于为什么你会这么好的讨论,以及为什么你不想使用属性,请查看Jon Skeet的Why Properties Matter.

使用属性而不仅仅暴露内部类数据的一个很好的理由显然是为了保护这些数据.您可以控制各个属性的访问权限以及验证正在设置的数据.您还可以实现计算的属性来计算值,这与您的类用户的任何其他属性没有什么不同.


Cam*_*and 2

根据MSDN 上的属性使用指南:

  • 当成员是逻辑数据成员时使用属性。在以下成员声明中,Name 是一个属性,因为它是类的逻辑成员。

  • 在以下情况下使用方法:

    • 该操作是一种转换,例如Object.ToString.
    • 该操作的成本足够高,您希望告知用户他们应该考虑缓存结果。
    • 使用 get 访问器获取属性值会产生明显的副作用。
    • 连续两次调用该成员会产生不同的结果。
    • 执行顺序很重要。请注意,类型的属性应该能够以任何顺序设置和检索。
    • 该成员是静态的,但返回一个可以更改的值。
    • 该成员返回一个数组。返回数组的属性可能非常具有误导性。通常需要返回内部数组的副本,以便用户无法更改内部状态。再加上用户可以轻松假设它是索引属性这一事实,会导致代码效率低下。在下面的代码示例中,对Methods 属性的每次调用都会创建数组的副本。结果,将在下面的循环中创建该数组的 2n+1 个副本。