.NET - 我应该何时使用属性与变量+访问器函数?

Bri*_*ter 4 .net vb.net properties

有没有我应该在.NET中执行以下操作而不是使用具有读/写功能的属性的情况?

private S as string

public function GetS() as string
     return S
end function

public sub SetS(byval NewS as string)
    S = NewS
end function
Run Code Online (Sandbox Code Playgroud)

属性是否只是提供了一种更有效的方法来做同样的事情?

在高性能应用程序中,属性是否会比上述访问器功能慢?

Ree*_*sey 8

内部属性只不过是一对方法.它们基本上评估为get和set访问器方法.

您应该使用属性,除非该属性会导致一些意外的,可能长时间运行的副作用,或者还有其他充分的理由使用方法.

有关详细信息,建议您阅读MSDN上的" 财产使用指南".特别是,在以下情况下使用方法:

  • 该操作是转换,例如Object.ToString.
  • 操作非常昂贵,您希望与用户通信他们应该考虑缓存结果.
  • 使用get访问器获取属性值会产生可观察到的副作用.
  • 连续两次调用该成员会产生不同的结果.
  • 执行顺序很重要.请注意,应该能够以任何顺序设置和检索类型的属性.
  • 该成员是静态的,但返回一个可以更改的值.
  • 该成员返回一个数组.

否则,我会使用一个属性. Brad Abram在博客上写了一些其他细节,包括为什么某些API函数使用方法的好理由(主要是因为它们可能导致跨计算机通信,这将属于"副作用"类别).