可能重复:
Properties vs Methods
什么时候最好使用属性或方法?
我有一个记录器类。当我创建这个类时,我传入一个文件名。
我的日志文件名非常简单,基本上它只是获取应用程序路径,然后将它与myapp.log结合起来。
现在我没有在我的方法中使用日志文件名行,而是想创建一个新方法来获取它。
所以我的问题是,因为它很简单,所以创建一个属性是一个好主意而不是创建一个方法,因为没有参数。
答案 0 :(得分:4)
属性通常用于存储对象的状态。方法通常用于对对象执行操作或返回结果。属性提供getter和setter,并且可以具有不同的范围(至少在.NET 2.0中)。使用属性vs方法进行序列化或克隆也有一些优点,UI控件通过反射查找属性以显示值。
答案 1 :(得分:1)
属性可用于返回简单值。在获取值时可能始终使用方法可能会导致任何性能损失。但是,简单的线性运算在属性方面可以很好。
答案 2 :(得分:1)
问问自己这是否是你班级的一个方面(它有什么)与你班级的行为(它的作用)。
在你的情况下,我建议去一个房产。
答案 3 :(得分:0)
我绝对会选择这家酒店。如果您正在做复杂或计算或时间密集的事情,那么您将采用方法路线。属性可以隐藏复杂操作正在发生的事实,因此我喜欢保留快速操作的属性和实际描述对象属性的属性。简单地说:方法“做”某些东西,属性描述。
答案 4 :(得分:0)
当你想像变量一样使用它时,你应该选择一个属性。当你想要清楚这是一个方法时,你应该使用一种方法。
由于属性是一种方法,它取决于您希望在此处进行通信的语义/设计。
答案 5 :(得分:0)
应使用属性来包装实例变量或提供简单的计算字段。我使用的经验法则是,如果有更多的轻微处理使它成为一种方法。
答案 6 :(得分:0)
如果你没有做任何重要的事情,请使用proerties 在您的情况下,只读属性(仅限获取)应该是好的。
当您执行除返回对内部成员的引用之外的其他操作时,方法很有意义。
答案 7 :(得分:0)
属性是一种设计气味。
它们有时适用于库类,其中作者无法知道数据的使用方式,但必须输出相同的值(例如,Key
和Value
属性。 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路径组合,那么我会使用一种方法。