方法Vs属性

Rav*_*avi 2 .net

我是.NET的新手.我有一个名为Project类,一个项目可以有多个forecasts.Now如果我要检查的项目有任何预测或不应该使用称为HasForecast(只读布尔属性),或者我应该使用一个名为HasForecast()的方法基本上返回boolean value.From框架设计指导我才知道,方法时,应使用操作复杂,因为在这里我从数据库中检索的预测值应该我认为方法,或因为它是一个逻辑数据成员我应该使用属性.如果我使用属性,我可以从其getter中调用DBLayer中的方法.请解释

此致,拉维

Bob*_*non 8

属性应该是非常轻的,行为和感觉像字段.如果需要访问数据库,则应使用方法.

请参阅MSDN:http://msdn.microsoft.com/en-us/library/bzwdh01d(VS.71).aspx

属性与方法

类库设计者通常必须决定将类成员实现为属性还是方法.通常,方法表示动作,属性表示数据.使用以下准则可帮助您选择这些选项.

使用属性时

  • 该成员是逻辑数据成员.在以下成员声明中,Name是属性,因为它是类的逻辑成员.

使用方法时:

  • 该操作是转换,例如Object.ToString.
  • 操作非常昂贵,您希望与用户通信他们应该考虑缓存结果.
  • 使用get访问器获取属性值会产生可观察到的副作用.
  • 连续两次调用该成员会产生不同的结果.
  • 执行顺序很重要.请注意,应该能够以任何顺序设置和检索类型的属性.
  • 该成员是静态的,但返回一个可以更改的值.
  • 该成员返回一个数组.返回数组的属性可能会产生误导.通常需要返回内部数组的副本,以便用户无法更改内部状态.这与用户可以轻易地认为它是索引属性的事实相结合,导致代码效率低下.