接口是否可以声明属性而不是方法?
哪个更优选?
interface ITaggable {string GetTag(); }
或
interface ITaggable {Tag {get;}}
生活在.Net世界。
答案 0 :(得分:7)
绝对。在接口中使用与在类中完全相同的属性。
答案 1 :(得分:2)
在这种情况下使用属性是完全可以的。当你真正得到一个值时,我更喜欢使用属性而不是GetFoo()方法。
答案 2 :(得分:2)
在这种情况下,属性绝对是首选。
答案 3 :(得分:1)
属性和方法之间的通常区别(至少我使用的那个,我真的希望它是“通常”:))仍然适用。
如果通过命名标识符(属性或方法)从对象获取数据的行为是:
...那么它应该是一种方法。
如果操作重量轻,没有副作用,则可以是属性。
因此,阅读一个人的名字是一个属性,因为该值可能应该在对象中开始。
然而,要弄清楚他在系统中有多少订单,这应该是一种方法,因为它可能需要做更昂贵的操作。
至少这是我使用的标准。
无论是班级还是界面,在这方面对我没有任何影响。
在您的具体情况下,我会去酒店。 “可标记”项目应该知道其标记。
答案 4 :(得分:0)
如果预期的实现语言支持属性,那么在您的界面中使用它们也是完全正确的(如果您的预期目标是一种语言,您当然必须坚持使用getter / setter访问器)缺乏对财产的支持。)
答案 5 :(得分:0)
我相信如果你试图声明一个只读属性(即使没有私有的setter),编译器会建议你使用一个方法。
至于真正的选择,这是一个特殊情况,你的编码风格和你所遵循的设计方法。