为什么界面中会有属性

时间:2013-05-19 20:27:29

标签: c# .net

为什么界面中会有属性?我知道接口是一个合同,但为什么你需要一个接口内的属性? 非常感谢

5 个答案:

答案 0 :(得分:7)

我们假设接口代表了一组对象。

进一步假设我们想知道有多少个物体。

Tada!我们使用了属性int Count {get;}

从技术上讲,您永远不会需要属性,因为您始终可以编写SetX()GetX()方法。所以说你绝不会需要一个。

但是,某些框架使用反射来查找属性,尤其是那些执行序列化和反序列化的框架。在这些情况下,属性

实际上,属性通常比方法更具可读性,并且如果使用得当,它们应该传达额外的信息,例如“读取此值不会很昂贵”,“读取此值不会导致可观察的一面 - 效果”。 (这些都应该适用于正确实施的属性获取者。)

答案 1 :(得分:2)

属性是GetSomething() / SetSomething()方法的快捷方式,这些方法在我们称之为接口的“合同”中非常常见。

不要将属性误认为字段(公共成员变量) - 属性USUALLY表示某种行为,如果在界面中显示该行为,则可以在实现类中放置简单的后备字段或更复杂的内容。

答案 2 :(得分:1)

这只是为了方便。属性被设计为getter和setter的替代品(getSomethingsetSomething等方法)。

例如,我们可以重写这个java代码:

interface Foo
{
    Bar getBar();
    void setBar(Bar bar);
}

...在C#中:

interface Foo
{
    Bar Bar { get; set; }
}

答案 3 :(得分:0)

因为事物有共同的属性。

每个类如何实现其属性取决于它们。有些人可以使用自动属性,有些人可以查询数据库。

答案 4 :(得分:0)

属性(get和/或set),事件(addremove)以及索引器(get和/或{{1} })都包含一个或两个访问器。访问器几乎就像一个方法,它只属于一个更专业的类型成员。

引自MSDN Interfaces (C# Programming Guide)

  

接口包含一组相关功能的定义   一个类或一个结构可以实现。[...]

     

[...]

     

接口可以包含方法,属性,事件,索引器或任何   这四种成员类型的组合。[...]

我想你开始阅读上面的参考文献了。