代码之家  ›  专栏  ›  技术社区  ›  SharePoint Newbie

接口声明属性而不是方法是否可以接受?

  •  3
  • SharePoint Newbie  · 技术社区  · 17 年前

    接口声明属性而不是方法是否可以接受?

    接口ITaggable{string GetTag();}


    生活在.Net世界。

    6 回复  |  直到 14 年前
        1
  •  7
  •   Jon Skeet    17 年前

    绝对地在接口中使用属性的方式与在类中完全相同。

    框架中的示例包括 IEnumerator<T>.Current ICollection<T>.Count .

        2
  •  2
  •   AgileJon    17 年前

    在这种情况下使用属性是完全可以的。我更喜欢使用属性,而不是GetFoo()方法,因为您实际上只是获取一个值。

        3
  •  2
  •   Otávio Décio    17 年前

    在这种情况下,属性绝对是首选。

        4
  •  1
  •   Lasse V. Karlsen    17 年前

    如果通过命名标识符(属性或方法)从对象获取数据的行为是:

    • 昂贵的操作(例如,它可能查询数据库)
    • 或有副作用的操作(即,它可能改变内部字段)

    ... 那么它应该是一种方法。

    如果操作重量轻,没有副作用,则可以是属性。

    然而,要计算出他在系统中有多少订单,这可能是一种方法,因为它可能需要进行更昂贵的操作。

    至少这是我使用的标准。

    在你的情况下,我会选择财产。“可标记”项应知道其标记。

        5
  •  0
  •   Alex Martelli    17 年前

    如果预期的实现语言支持属性,那么在接口中使用它们也是完全正确的(当然,如果预期的目标语言缺乏对属性的支持,则必须使用getter/setter访问器)。

        6
  •  0
  •   User    17 年前

    我相信如果您试图声明只读属性(即使没有私有setter),编译器会建议您使用方法。

    至于真正的选择,这取决于特定的情况、您的编码风格和您所遵循的设计方法。