Мы называем такой экземпляр "коллекцией"? "Перечислимый"? Или что-то другое? Я задаю свои две основные цели:
- Чтобы понять другие разработчики, не объясняя, что класс реализует
IEnumerable
. - Быть технически корректным и точным.
Мы называем такой экземпляр "коллекцией"? "Перечислимый"? Или что-то другое? Я задаю свои две основные цели:
IEnumerable
.Чтобы быть технически точным, я бы сообщил разработчикам, что он реализует IEnumerable.
Говорить что-либо еще менее информативно.
Любой, кто понимает IEnumerable, сразу поймет возможности вашего класса. Любой, кто этого не сделает, не получит его, как вы описали его.
"перечислимый"?
Это довольно широко принятый ответ; Я бы рекомендовал не называть его коллекцией, потому что это может означать, что объект реализует ICollection
или ICollection<T>
.
Нет, поэтому я бы использовал фразу "перечислимый тип".
Коллекция - это нечто, содержащее конечное число элементов. Перечислимый тип не обязательно является коллекцией, потому что это может быть бесконечный список.
Список - это коллекция, имеющая определенный порядок.
Для этого нет конкретного термина, хотя большинство классов, реализующих IEnumerable
, являются коллекциями. Заметным исключением является String
, но его можно рассматривать как набор символов...
Обычно я просто говорю "У меня есть этот IEnumerable...", и это кажется достаточно на работе и в SO. Он ясно выражает, что я говорю о классе, который реализует IEnumerable.
Я бы согласился с тем, что предложил " enumerator enumerable", но если вы хотите что-то другое, также будет работать термин "последовательность".
Вызов его с помощью "IEnumerable" будет вполне уместным. Это делает очень очевидным, что класс реализует IEnumerable и является кратким и точным.
С объектно-ориентированной точки зрения этот класс IS-AN IEnumerable, поэтому снова это оправдано.
Класс ObservableCollection называет его "коллекцией".
//
// Summary:
// Initializes a new instance of the System.Collections.ObjectModel.ObservableCollection<T>
// class that contains elements copied from the specified collection.
//
// Parameters:
// collection:
// The collection from which the elements are copied.
//
// Exceptions:
// System.ArgumentNullException:
// The collection parameter cannot be null.
public ObservableCollection(IEnumerable<T> collection);
Я предлагаю "Перечисление".
Это технически означает результат перечисления, но обычно это воспринимается как интерфейс IEnumerable.
Стив
Трудность состоит в том, что IEnumerable и слово "enumerable" не являются существительным. Вы говорите "something is enumerable"
, а не "something is an enumerable"
. Другими словами, перечислимый объект - это то, что вы делаете с объектом, а не определение самого объекта.
MSDN описывает это как:
IEnumerable - выдает счетчик, который поддерживает простую итерацию по коллекции определенного типа.
Чтобы быть точным при оформлении документа, я бы использовал:
"List <int> - это перечислимая коллекция значений System.Int32."