代码之家  ›  专栏  ›  技术社区  ›  Otávio Décio

接口应该定义属性吗?

  •  22
  • Otávio Décio  · 技术社区  · 14 年前

    MSDN “只包含方法、委托或事件的签名。”但是,由于属性只不过是get和set方法的语法糖,因此在接口中也允许使用它们。我的问题是-在接口中定义属性是否合适,或者我们是否应该坚持MSDN描述的场景?

    4 回复  |  直到 5 年前
        1
  •  35
  •   Reed Copsey    14 年前

    正如您所说,它们实际上是一个get、set或get and set方法。框架中的许多接口定义属性,例如 IAsyncResult IWebProxy .

        2
  •  15
  •   Simon Bartlett    14 年前

    您链接到的文章还指出:

    接口可以是 下列成员的签名:

    • 方法
        3
  •  3
  •   Edison Chuang    14 年前

    public void main()
    {
        IUser u = User.GetUser("id");
        string name = u.Name;
    }
    
        4
  •  1
  •   Josh Flash    5 年前

    在接口中定义属性是完全合法的。关于为什么可以使用属性但不能使用字段,这里给出了一个相当好的详细解释: Why Can's C Sharp Interfaces Contain Fields

    类似地,Java不允许在其接口中使用实例变量。但是,它允许声明变量,这些变量将被视为静态变量;只读。Java中的约定是在实现类中需要getMyVariable()和setMyVariable()方法时编写它们。基本上,C只允许更简洁的语法。