为什么界面中会有属性?我知道接口是一个合同,但为什么你需要一个接口内的属性? 非常感谢
答案 0 :(得分:7)
我们假设接口代表了一组对象。
进一步假设我们想知道有多少个物体。
Tada!我们使用了属性int Count {get;}
从技术上讲,您永远不会需要属性,因为您始终可以编写SetX()
和GetX()
方法。所以说你绝不会需要一个。
但是,某些框架使用反射来查找属性,尤其是那些执行序列化和反序列化的框架。在这些情况下,属性 。
实际上,属性通常比方法更具可读性,并且如果使用得当,它们应该传达额外的信息,例如“读取此值不会很昂贵”,“读取此值不会导致可观察的一面 - 效果”。 (这些都应该适用于正确实施的属性获取者。)
答案 1 :(得分:2)
属性是GetSomething()
/ SetSomething()
方法的快捷方式,这些方法在我们称之为接口的“合同”中非常常见。
不要将属性误认为字段(公共成员变量) - 属性USUALLY表示某种行为,如果在界面中显示该行为,则可以在实现类中放置简单的后备字段或更复杂的内容。
答案 2 :(得分:1)
这只是为了方便。属性被设计为getter和setter的替代品(getSomething
和setSomething
等方法)。
例如,我们可以重写这个java代码:
interface Foo
{
Bar getBar();
void setBar(Bar bar);
}
...在C#中:
interface Foo
{
Bar Bar { get; set; }
}
答案 3 :(得分:0)
因为事物有共同的属性。
每个类如何实现其属性取决于它们。有些人可以使用自动属性,有些人可以查询数据库。
答案 4 :(得分:0)
属性(get
和/或set
),事件(add
和remove
)以及索引器(get
和/或{{1} })都包含一个或两个访问器。访问器几乎就像一个方法,它只属于一个更专业的类型成员。
引自MSDN Interfaces (C# Programming Guide):
接口包含一组相关功能的定义 一个类或一个结构可以实现。[...]
[...]
接口可以包含方法,属性,事件,索引器或任何 这四种成员类型的组合。[...]
我想你开始阅读上面的参考文献了。