何时使用 GetXXX() 方法以及何时使用 Getter 属性
有一些 .NET
库使用方法来访问对象数据而不是 getter,即 HttpWebResponse.GetResponseStream()
。
还有通过属性访问流的示例,即HttpResponse.OutputStream
。
我的问题是何时使用哪种访问形式以及为什么?
There are some .NET
libraries which use methods for accessing object data instead of getters i.e HttpWebResponse.GetResponseStream()
.
Also there are examples of accessing an stream by a property i.e HttpResponse.OutputStream
.
My question is when to use which form of access and why ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
请参阅 FxCop 规则: CA1024:在适当的情况下使用属性。
See the FxCop rule: CA1024: Use properties where appropriate.
好问题。尽管属性只不过是一对 get/set 方法的语法糖,但这两个方法应该在不同的时间使用。
通常,在以下情况下应使用属性样式 getter:
一般情况下,您应该在以下情况下使用 getter 方法:
用一句话来说,如果从概念上讲,所需的值是对象所拥有的,则使用属性。如果所需的值是对象执行某些操作的结果,请使用方法。
Good question. Although a property is little more than syntax sugar for a pair of get/set methods, there two should be used in different times.
Generally, you should use a property-style getter when:
Generally, you should use a getter method when:
In a sentence, if conceptually speaking the value needed is something the object HAS, use a property. If the value needed is the result of something the object DOES, use a method.
好问题。 这篇文章提出了一些好的观点。一般来说,当计算成本昂贵时我使用方法,而当计算成本不高(即返回存储值)时我使用属性。
Good question. This article brings up a few good points. In general, I use methods when the computation is expensive and properties when computation is not expensive (i.e. a stored value is returned).
我的观点是,我确信,您应该只使用属性进行序列化,很快就会达到-10。在所有其他情况下,显式方法调用是更好的选择,因为当您查看它时,您知道正在调用可能具有副作用的方法。
我猜“正确”(tm)的答案是,当你的方法要做的只是返回值时,使用 getter/setter 是可以的,但如果有任何工作要做,请使用方法。
My opinion which, I'm sure, will get to -10 real fast, is that you should only use properties for serialization. In all other cases explicit method call is preferable because when you look at it, you know that a method with possible side effects is being invoked.
I guess the "correct" (tm) answer is that when all your method would do is return the value, it is ok to use getter/setter, but if there is any work to do, use a method.