【发布时间】:2012-10-20 20:42:10
【问题描述】:
我需要设计自己的自定义GenericCollection 类。现在我有很多选择可以使用IEnumerable、ICollection 和IList 来推导它,稍后会提供一些附加功能。
我有点困惑,如果我使用IEnumerable<T>,我可能需要声明对象以实际保存集合,就像在这种情况下_list一样。
public class GenericCollection<T> : IEnumerable<T>
{
private List<T> _list;
//...
}
但是如果我使用ICollection<T> 或IList<T>,我不需要声明List 对象,因为它是隐式可用的。
public class GenericCollection<T> : IList<T>
{
// no need for List object
//private List<T> _list;
//...
}
这两种方法在性能方面有什么区别?
在哪种情况下,每个人都是首选,尤其是在设计您自己的系列时。我对性能良好的轻量级系列感兴趣。我认为这可以使用IEnumerable<T> 来实现,但究竟有哪些强有力的理由支持它呢?
我已经查看了一些现有的帖子,但没有一个提供所需的信息。
【问题讨论】:
-
在第一个示例中,您不需要拥有 _list 成员。此外,如果从IList继承并实现与IList相关的公共接口,您仍然需要实现一些存储机制
-
通用集合?对我来说听起来像是一个列表......
-
可以更改底层实现,Generic Collection 只是一个包装器。
标签: c# ienumerable ilist icollection custom-collection