何时使用GetXXX()方法和Getter属性

时间:2011-01-12 16:56:54

标签: c# methods properties

有些.NET个库使用方法来访问对象数据而不是getter,即HttpWebResponse.GetResponseStream()

还有一些属性访问流的示例,即HttpResponse.OutputStream

我的问题是何时使用哪种访问形式?为什么?

4 个答案:

答案 0 :(得分:9)

答案 1 :(得分:8)

好问题。虽然属性只是一对get / set方法的语法糖,但是应该在不同的时间使用两个。

通常,您应该在以下情况下使用属性样式的getter:

  • 要返回的值表示类似字段的数据(通常是基元/值类型,但对另一个域对象的引用也很好)
  • 产生该值的计算(如果有的话)相对便宜/无副作用
  • 获得相同的值两次将在给定相同输入的情况下产生相同的值

通常,您应该在以下情况下使用getter方法:

  • 为此目的创建返回的对象(例如工厂方法)
  • 评估返回值需要副作用(例如,触摸文件系统,数据库或更改其他值)
  • 获取两次返回类型将产生两个不同的结果(即两个Streams,db连接等)。

在一个句子中,如果从概念上讲所需的值是对象HAS,则使用属性。如果所需的值是对象DOES的结果,请使用方法。

答案 2 :(得分:3)

好问题。 This文章提出了一些好处。一般来说,我在计算成本高时使用方法,而在计算成本不高时使用属性(即返回存储值)。

答案 3 :(得分:1)

我的意见,我敢肯定,它将快速达到-10,是你应该只使用属性进行序列化。在所有其他情况下,显式方法调用更可取,因为当您查看它时,您知道正在调用具有可能副作用的方法。

我想“正确”(tm)的答案是,当你所有的方法都会返回值时,可以使用getter / setter,但是如果有任何工作要做,请使用方法。