Fur*_*dar 21 c# ienumerable ilist icollection custom-collection
我需要设计自己的自定义GenericCollection类.现在我有很多选择使用以获得它IEnumerable,ICollection和IList,在后来提供了一些附加功能.
我很困惑,如果我和我一起去,IEnumerable<T>我可能需要声明对象实际上像这种情况一样持有集合_list.
public class GenericCollection<T> : IEnumerable<T>
{
private List<T> _list;
//...
}
Run Code Online (Sandbox Code Playgroud)
但是如果我使用ICollection<T>或者IList<T>,我不需要声明List对象,因为它是隐式可用的.
public class GenericCollection<T> : IList<T>
{
// no need for List object
//private List<T> _list;
//...
}
Run Code Online (Sandbox Code Playgroud)
这两种方法在性能方面有何不同?
在哪种情况下,每个人都是首选,特别是在设计自己的集合时.我对轻量级收藏感兴趣,性能良好.我认为这可以通过使用,IEnumerable<T>但是如何与一些强有力的理由一起使用呢?
我已经审查了一些现有的帖子,但没有提供所需的信息.
Tim*_* S. 46
IEnumerable,ICollection和IList(通常,任何带I前缀的类型)只是接口.它们允许您公开您的类将要执行的操作,但与继承类不同,接口不会为您提供他们必须执行的任何操作的默认实现.
至于选择哪个界面,这里有一个快速指南:
IList是ICollection可以通过索引访问的.ICollection是一个IEnumerable容易获得喜欢的东西Add,Remove和Count.IEnumerable是可枚举的任何东西,即使这些东西的列表在您枚举之前不存在.您可能要扩展(或保留为运行大多数逻辑私有字段)为您收集一些类List<T>,Collection<T>它实现了,(IList<T>但有压倒一切的实现更容易访问,请参阅收集<T>对名单<T>你应该在你的接口上使用什么?对于这两者之间的巨大差异)ObservableCollection<T>,或者不是列表的集合,比如Dictionary<T, U>和HashSet<T>.有关其中任何一项的更多信息,请查阅该课程上的MSDN文档.
| 归档时间: |
|
| 查看次数: |
18082 次 |
| 最近记录: |