C# 中的方法与属性 - 有什么区别[重复]

2024-04-23

可能的重复:
属性与方法 https://stackoverflow.com/questions/601621/properties-vs-methods

在方法中,您也可以键入一些代码,也可以在属性中键入一些代码。例如我有一个属性名称。当类名更改时,我想从数据库获取一些数据并更改对象的状态。我可以添加此代码来设置我的部分财产。其他解决方案是将设置部分更改为私有并添加名为 SetName 的方法,并在此方法中添加我的代码。

那么区别是什么呢?什么时候不适合将一些代码放入 getter/setter 以及什么时候创建自己的方法来更改我的属性和类的其他部分?


这是一组很好的指导方针何时使用属性与方法比尔·瓦格纳 http://dipankaronline.wordpress.com/2011/10/28/guidelines-for-when-to-use-properties-vs-methods-from-bill-wagner/(固定链接)

  • 当所有这些都成立时使用属性: getter 应该很简单,因此不太可能抛出异常。请注意,这意味着没有网络(或数据库)访问。两者都可能失败,因此会抛出异常。
  • 他们不应该相互依赖。请注意,这将包括设置一个属性并使其影响另一个属性。 (例如,设置 FirstName 属性将影响由名字 + 姓氏属性组成的只读 FullName 属性,这意味着这种依赖关系)
  • 它们应该可以按任何顺序设置
  • getter 没有可观察到的副作用。请注意,本指南并不排除属性中某些形式的惰性求值。
  • 该方法必须始终立即返回。 (请注意,这排除了进行数据库访问调用、Web 服务调用或其他类似操作的属性)。
  • 如果成员返回数组,则使用方法。
  • 重复调用 getter(没有中间代码)应该返回相同的值。
  • 重复调用 setter(具有相同的值)应该与单次调用没有任何区别。

  • get 不应返回对内部数据结构的引用(参见第 23 项)。有一种方法可以返回深层副本,并且可以避免此问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 中的方法与属性 - 有什么区别[重复] 的相关文章

随机推荐