0

为什么接口中有一个属性?我知道接口是一种合同,但为什么您需要接口中的属性?非常感谢

4

5 回答 5

7

那么让我们假设接口表示对象的集合。

进一步假设我们想知道有多少对象。

多田!我们使用一个属性int Count {get;}

从技术上讲,您永远不需要属性,因为您总是可以编写一个SetX()和一个GetX()方法。所以说你永远不需要一个是真的。

但是,有些框架使用反射来查找属性,尤其是那些进行序列化和反序列化的框架。在这些情况下,确实需要属性。

实际上,属性通常比方法更具可读性,并且正确使用它们应该传达额外的信息,例如“读取这个值不会很昂贵”和“读取这个值不会引起可观察到的副作用”。(这两个都应该适用于正确实现的属性获取器。)

于 2013-05-19T20:29:04.010 回答
2

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

不要将属性误认为字段(公共成员变量) - 属性通常表示某种行为,如果您在接口中呈现该行为,您可以在实现类中放置简单的支持字段或更复杂的东西。

于 2013-05-19T20:33:39.220 回答
1

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

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

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

...在 C# 中为:

interface Foo
{
    Bar Bar { get; set; }
}
于 2013-05-19T20:32:14.723 回答
0

因为事物有共同的属性。

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

于 2013-05-19T20:31:12.153 回答
0

属性(get和/或set)、事件(addremove)和索引器(get和/或set)都由一个或两个访问器组成。访问器几乎就像一个方法,它只是属于一个更专业的类型成员。

引用 MSDN Interfaces (C# Programming Guide)

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

[...]

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

我想你开始阅读上面的参考资料。

于 2013-05-19T20:46:45.353 回答