В чем разница между списком (из T) и коллекцией (из T)? - PullRequest
83 голосов
/ 30 декабря 2008

Я видел, как они использовались во многом одинаково, и я волнуюсь, что собираюсь пойти по пути в дизайне, который станет необратимым, если я не пойму это лучше. Также я использую .NET.

Ответы [ 12 ]

3 голосов
/ 31 октября 2014

В дополнение к другим ответам я составил краткий обзор общих возможностей списков и коллекций. Коллекция ограничена подмножеством Списка:

* = present
o = partially present

Property/Method   Collection<T>   List<T>
----------------------------------------------<code>
Add()                *              *
AddRange()                          *
AsReadOnly()                        *
BinarySearch()                      *
Capacity                            *
Clear()              *              *
Contains()           *              *
ConvertAll()                        *
CopyTo()             o              *
Count                *              *
Equals()             *              *
Exists()                            *
Find()                              *
FindAll()                           *
FindIndex()                         *
FindLast()                          *
FindLastIndex()                     *
ForEach()                           *
GetEnumerator()      *              *
GetHashCode()        *              *
GetRange()                          *
GetType()            *              *
IndexOf()            o              *
Insert()             *              *
InsertRange()                       *
Item()               *              *
LastIndexOf()                       *
New()                o              *
ReferenceEquals()    *              *
Remove()             *              *
RemoveAll()                         *
RemoveAt()           *              *
RemoveRange()                       *
Reverse()                           *
Sort()                              *
ToArray()                           *
ToString()           *              *
TrimExcess()                        *
TrueForAll()                        *
</code>
3 голосов
/ 30 декабря 2008

Оба реализуют одинаковые интерфейсы, поэтому они будут вести себя одинаково. Возможно, они реализованы по-разному внутри, но это должно быть проверено.

Единственными реальными различиями, которые я вижу, являются пространства имен и тот факт, что Collection<T> помечен ComVisibleAttribute(false), поэтому код COM не может его использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...