可能重复:
Properties vs Methods
关于何时使用属性与方法,是否有任何规则或一般最佳实践?从技术上讲,任何无参数的方法都可以在属性中进行,任何属性都可以作为方法,但有时何时决定何时使用其中一个可能会模糊。
我希望在两者之间做出决定时,我们会记住一些规则。
答案 0 :(得分:12)
一般标准是关于副作用。如果通过调用成员来获取值,则只获得该值,这是一个属性。如果有副作用,它应该是一种方法。
换句话说:即使属性不是字段,属性应该与字段非常相似。这意味着不会造成副作用,执行时间不会太长,也不会抛出异常。
答案 1 :(得分:5)
补充一下克莱图所说的话。
这是来自msdn:“财产使用指南”http://msdn.microsoft.com/en-us/library/bzwdh01d(VS.71).aspx 请参阅“属性与方法”部分:
答案 2 :(得分:2)
我会看看有关属性与方法的this SO帖子 它提到了Choosing Between Properties and Methods
答案 3 :(得分:1)
当某些er ..属性快速执行时使用属性(例如ctrl.Color,ctrl.Text,ctrl.Width,DateTime.Now)。但如果它表示进程,则使用方法(例如str.GetHash(),machine.GetFqdn(),file.GetMd5())。所以在文件md5中,你不会把它变成属性
这最强调when to use a method:
操作足够昂贵 您想要与用户沟通 他们应该考虑缓存 结果
注意.NET的DateTime.Now,尽管它很快并且属性很好,但是当它在程序中被多次调用时,它需要被缓存,甚至彼此靠近。他们决定把它变成一个属性,属性中有 currentness 的感觉,不像你调用一个方法时,它没有瞬时/当前性的感觉它。所以你需要考虑到即使你得到一个值并需要缓存,但如果它需要感觉即时,一定要使用属性。
毕竟,如果某些东西真的很快并且感觉不是昂贵的操作,它必须有一个可以传达其坚牢度的结构。我认为这就是为什么.NET具有吸引力(或任何具有属性构造的语言)的原因,它不会强迫开发人员使用方法,当你可以使它成为属性时,它不会强迫开发人员使用方法,当你可以做一个围绕重载运算符的高性能代码,这是最好的实用编程答案 4 :(得分:0)
这些属性与它自己的对象/类有关并且通常用它来描述它。 UI元素的最佳示例,背景,颜色,IsEnabled是适当的。
这些方法通常是对象/类可以执行并可以产生结果的操作。这里最好的例子是MessageBox的方法。它会做一个动作并返回一个结果。
答案 5 :(得分:0)
在基础层面,选择财产或方法之间的决定取决于“有”,“确实”的论点。如果您需要的信息是属性或质量,请使用属性。如果这是一个动作,那么方法。
但在实际水平上,一直很难以这种方式实施。
答案 6 :(得分:0)
用基本单词表示,属性描述对象,而方法是对象可以执行的操作。
对于代表汽车的对象,drive()
将是一种方法,而color
将是一种属性。