为什么继承IList?

时间:2011-03-04 08:43:01

标签: c#

您好 我发现有人使用从iList接口继承的类。我不明白为什么这个人不使用类中的集合而不是继承。有什么区别?

2 个答案:

答案 0 :(得分:3)

那是因为这个“某人”想要实现一种在官方类库中找不到的列表。

在某些情况下,所以具体要求将通过实现IList或任何其他(IList,ICollection ...)来强制实现特定类型的列表,以便让您自己的类与.NET API兼容或第三 - 派对。

嗯,在一天结束时,这是一个界面的目标,不是吗? :)合同!

答案 1 :(得分:2)

IList定义合同。实施者可以自由地做任何他想要尊重合同的事情。接口不提供任何实现,因此实现者必须编写整个行为

继承现有集合是“specialization”。这意味着继承的类继承父项的行为,其属性等。继承的类然后可以添加或覆盖必要的更改。在大多数情况下,基类提供了一组随时可用的方法(通常是收集的情况)。

在两者之间没有通用的方法可供选择。但是,一般情况下,我们使用覆盖基类而不是实现接口。原因是基类包含所有管道,继承类只添加一些逻辑或业务方法(例如,CustomerCollection上的FindByName)。有时你不能,所以你必须转向接口实现。