财产还是方法?

时间:2009-06-10 06:34:16

标签: c# properties parameters methods

  

可能重复:
  Properties vs Methods

什么时候最好使用属性或方法?

我有一个记录器类。当我创建这个类时,我传入一个文件名。

我的日志文件名非常简单,基本上它只是获取应用程序路径,然后将它与myapp.log结合起来。

现在我没有在我的方法中使用日志文件名行,而是想创建一个新方法来获取它。

所以我的问题是,因为它很简单,所以创建一个属性是一个好主意而不是创建一个方法,因为没有参数。


重复 Properties vs Methods

9 个答案:

答案 0 :(得分:4)

属性通常用于存储对象的状态。方法通常用于对对象执行操作或返回结果。属性提供getter和setter,并且可以具有不同的范围(至少在.NET 2.0中)。使用属性vs方法进行序列化或克隆也有一些优点,UI控件通过反射查找属性以显示值。

答案 1 :(得分:1)

属性可用于返回简单值。在获取值时可能始终使用方法可能会导致任何性能损失。但是,简单的线性运算在属性方面可以很好。

答案 2 :(得分:1)

问问自己这是否是你班级的一个方面(它有什么)与你班级的行为(它的作用)。

在你的情况下,我建议去一个房产。

答案 3 :(得分:0)

我绝对会选择这家酒店。如果您正在做复杂或计算或时间密集的事情,那么您将采用方法路线。属性可以隐藏复杂操作正在发生的事实,因此我喜欢保留快速操作的属性和实际描述对象属性的属性。简单地说:方法“做”某些东西,属性描述。

答案 4 :(得分:0)

当你想像变量一样使用它时,你应该选择一个属性。当你想要清楚这是一个方法时,你应该使用一种方法。

由于属性是一种方法,它取决于您希望在此处进行通信的语义/设计。

答案 5 :(得分:0)

应使用属性来包装实例变量或提供简单的计算字段。我使用的经验法则是,如果有更多的轻微处理使它成为一种方法。

答案 6 :(得分:0)

如果你没有做任何重要的事情,请使用proerties 在您的情况下,只读属性(仅限获取)应该是好的。

当您执行除返回对内部成员的引用之外的其他操作时,方法很有意义。

答案 7 :(得分:0)

属性是一种设计气味。

它们有时适用于库类,其中作者无法知道数据的使用方式,但必须输出相同的值(例如,KeyValue属性。 KeyValuePair上课。)

恕我直言,库类中某些属性的使用是不好的。例如分配DOM元素的InnerHTML属性会触发解析。这应该是一种方法。

但是在大​​多数应用程序类中,您确实知道如何使用该值,并且类的责任不是提醒您放入什么值,而只是使用数据来完成其工作。 Messages should exercise capabilities, not request information

如果您想要的值是由类计算的(或者如果类是工厂而值是新创建的对象),则使用方法可以更清楚地表明存在计算。

如果你正在设置日志文件名,那么还有打开文件的副作用(可能会引发异常?)这应该是一种方法。

如果文件名只是日志消息的一部分,则不需要属性的getter,只需要setter。但是你会有一个只写属性。有些人发现这些令人困惑,所以我避免使用它们。

所以我肯定会选择这种方法。

答案 8 :(得分:0)

重复问题的答案是正确的。 MSDN上有一篇关于差异的非常好的文章,以及何时应该使用另一个。 http://msdn.microsoft.com/en-us/library/ms229054.aspx

在我的情况下,我相信使用属性是正确的,因为它只返回exe +路径的文件名组合。

但是,如果我决定传递文件名以使其与exe路径组合,那么我会使用一种方法。