[英]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.