Каков технически правильный термин для экземпляра класса, который реализует IEnumerable? - PullRequest
11 голосов
/ 22 июля 2011

Мы называем такой экземпляр "коллекцией"?"Перечислимо"?Или что-то другое?Я задаю две основные цели:

  1. Для понимания другими разработчиками без объяснения того, что класс реализует IEnumerable.
  2. Быть технически правильным и точным.

Ответы [ 10 ]

14 голосов
/ 22 июля 2011

Чтобы быть технически точным, я бы сообщил разработчикам, что он реализует IEnumerable.

Скажем, все остальное менее информативно.

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

6 голосов
/ 22 июля 2011

"перечислимый"?

Это довольно широко принятый ответ;Я бы не рекомендовал называть это коллекцией, потому что это может означать, что объект реализует ICollection или ICollection<T>.

2 голосов
/ 22 июля 2011

Я согласен с теми, кто предлагает " перечислитель перечисляемый", но если вы хотите что-то еще, термин "последовательность" также будет работать.

2 голосов
/ 22 июля 2011

Я обычно просто говорю "У меня есть этот IEnumerable ...", и этого кажется достаточно на работе и в SO.Это ясно говорит о том, что я говорю о классе, который реализует IEnumerable.

2 голосов
/ 22 июля 2011

Для него нет конкретного термина, хотя большинство классов, которые реализуют IEnumerable, являются коллекциями. Заметным исключением является String, но его можно рассматривать как набор символов ...

2 голосов
/ 22 июля 2011

Нет ни одного, поэтому я бы использовал фразу "перечислимый тип".

Коллекция - это нечто, содержащее конечное число элементов.Перечислимый тип не обязательно является коллекцией, потому что это может быть бесконечный список.

Список - это коллекция, которая имеет определенный порядок.

1 голос
/ 09 февраля 2012

Я предлагаю «Перечисление».

Технически это означает результат перечисления, но обычно так воспринимается интерфейс IEnumerable.

Стив

1 голос
/ 22 июля 2011

Класс 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);
1 голос
/ 22 июля 2011

Называть его "IEnumerable" было бы совершенно уместно.Это делает очевидным, что этот класс реализует IEnumerable, и является кратким и точным.

С объектно-ориентированной точки зрения этот класс IS-AN IEnumerable, поэтому, опять же, это оправдано.

0 голосов
/ 22 июля 2011

Сложность в том, что IEnumerable и слово «enumerable» не являются существительными.Вы говорите "something is enumerable", а не "something is an enumerable".Другими словами, перечисляемый объект - это то, что вы делаете с объектом, а не определение самого объекта.

MSDN описывает это как:

IEnumerable - выставляет перечислитель,которая поддерживает простую итерацию по коллекции указанного типа.

Чтобы быть точным при документировании, я бы использовал:

"Список - это перечисляемая коллекцияЗначения System.Int32. "

...