[英]What is the most basic class that inherits ICollection<T>
我需要一个通用的集合类,我可以添加,并枚举。 由于ICollection<T>
继承自IEnumerable<T>
,因此该类实际上只需从ICollection<T>
继承。 BCL中是否有一个简单的泛型类只是像CollectionBase的泛型版一样继承ICollection<T>
? 如果没有,那么哪个班级最接近?
我猜List<T>
这是我一直在使用但我不需要顺序方面。 有什么更好的(我的意思是[更小的内存占用/更快的访问/更简单])? 如果它存在,袋子将是完美的。
编辑1:在我的特定实例中,我是.concat
到另一个IEnumerable,查询它,然后显示结果(没有特定的顺序)。 我不是想自己上课。 我只需要多次制作一次性收藏品,我认为找到最好的一次性使用会很有用。 因为我觉得我已经做了很多次类似的事情,我觉得我应该尽可能保持这个问题的通用性(没有双关语意),我现在知道的更好。
编辑2:感谢大家的回答,正如@BlueRaja指出的那样,任何简单的类都会有相同的开销,因此我认为我会坚持使用List<T>
原始方法。 由于它们大致相同,我的“更容易打字”的愚蠢理由,以及“我不必带来另一种使用”并不是很糟糕的原因。
[更小的内存占用/更快的访问/更简单]
它们将具有几乎相同的内存占用,如果使用ICollection,接口将不会更改。
真正重要的是哪种方法最适合您所需的操作:Linked-list可以更好地追加/删除(头/尾元素),而基于数组的列表具有随机访问权限。 还有其他结构 - 您应该使用它取决于您的应用程序。
您可能想要查看Collection<T>
。 它是为子类化的明确目的而设计的,正如文档所示:
提供泛型集合的基类。
话虽如此,任何收藏都很好; 我继承自List<T>
, Stack<T>
等等; 选择最接近您实际需要的功能的那个。
更小更快取决于您正在做什么以及您的需求是什么。 我可能推荐的唯一其他类是LinkedList<>
,它实现了ICollection<>
。
CollectionBase
主要用于提供创建类型集合的简单机制。 使用Generics,现在可以输入所有集合。 过去使用CollectionBase
扩展的绝大多数情况现在应该使用任何内置集合,例如List<>
或LinkedList<>
。
对于那些需要提供自定义集合而不是类型的原因(即添加时的额外验证或某些非标准逻辑),仍然存在Collection<>
。 Collection<>
并不像CollectionBase
那样常用,并且需要的范围要小得多。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.