![](/img/trans.png)
[英]Can someone tell me the difference between AddForce and transform.translate?
[英]Someone can tell me what's the difference between List, Collection and Enumerable?
当我做一个程序时,有时候我有这个疑问。 我一直在使用List<T>
但我还没有使用其他的。
我想知道每个人何时更好地使用,以及在什么情况下。
我相信你可以自己阅读文档。 我在这里给出一个简短的总结:
IEnumerable
是一个在集合上公开枚举器的接口。 如果希望能够支持迭代,则实现此接口,例如在foreach
循环内部。 Collection
是IEnumerable
一个实现(因此你可以迭代它),它通常由想要具有类似集合的行为的用户定义类进一步扩展(即使用Add
, Remove
, Contains
等)。 它也可以“按原样”使用。 List
也是IEnumerable
一个实现(因此你可以迭代它),它通常用作“原样”作为某种类型对象的容器。 在后台使用动态调整数组,并且是ArrayList
的通用等价物。 请注意,虽然IEnumerable
可以是通用的也可以是非泛型的,但Collection
和List
只能用作泛型类。
MSDN可以:
List是可实例化的类型,以线性方式保存项目。 (编辑:我被告知它是用动态数组实现的,而不是链接列表,这只是我的猜测)。
ICollection
/ CollectionBase
和IEnumerable
不是直接可实例化的类型。
CollectionBase
/ ICollection
是一个基类/接口,由任何认为自己是集合并保存多个项的类继承/实现。 CollectionBase
/ ICollection
还允许您在不知道其实现的情况下传递集合。
IEnumerable
也是一个提供迭代集合的方法的接口。 IEnumerable
基本上允许你在集合上使用foreach
循环。 您可以直接使用接口方法来获取一些C ++样式的迭代器,但是foreach
循环不容易出错。
如果查看三者的定义(见下文),您会注意到List
实现了Enumerable
, ICollection
和ICollection
实现了IEnumerable
。 更清楚:
List
是CLASS ,它可以存储可变数量的相同类型的项目以及其他两个接口指定的功能。
ICollection
是一个接口,它指定了操作集合的通用方法。 注意:这是一个接口,因此无法实例化。
IEnumerable
是一个接口,它指定迭代集合的方法。 注意:这是一个接口,因此无法实例化。
表示可以通过索引访问的强类型对象列表。 提供搜索,排序和操作列表的方法。
public class List<T> : IList<T>, ICollection<T>,
IEnumerable<T>, IList, ICollection, IEnumerable
定义操作泛型集合的方法。
public interface ICollection<T> : IEnumerable<T>,
IEnumerable
公开枚举器,它支持对指定类型的集合进行简单迭代。
public interface IEnumerable<out T> : IEnumerable
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.