Подтвердить что ты не робот

Сравнение между List, IList и IEnumerable

У меня есть приложение С#, в котором я работаю с некоторыми типами коллекций. Мне нужно знать, в чем различия между этими типами:

  1. List
  2. IList
  3. IEnumerable

Каковы различия для каждого из них по сравнению с другими?

4b9b3361

Ответ 1

  • IEnumerable<T> - это базовый интерфейс, который расширяется или реализуется. Он не позволяет осуществлять прямой доступ и только для чтения. Поэтому используйте это, только если вы собираетесь итерации по коллекции.

  • ICollection<T> extends IEnumerable<T>, но дополнительно позволяет добавлять, удалять, проверять, присутствует ли элемент в коллекции и получить общее количество элементов. Он не позволяет напрямую обращаться к элементу по индексу. Это будет операция O (n), так как вам нужно начать повторять ее, пока не найдете соответствующий элемент.

  • IList<T> extends ICollection<T> (и, следовательно, наследует все его свойства), но дополнительно позволяет напрямую обращаться к элементам по индексу. Это операция O (1).

  • List<T> - это всего лишь конкретная реализация интерфейса IList<T>.

В вашем коде вы всегда должны показывать тип, который является наивысшим в иерархии объектов, который будет соответствовать потребностям вызывающих. Например, если вызывающие абоненты собираются перечислить только набор данных, используйте IEnumerable<T>. Если они должны иметь прямой доступ к элементам по индексу, выведите IList<T>.

List<T> должен использоваться только внутри вашего кода, но обычно не присутствует в сигнатуре методов, которые вы подвергаете. Это дает вам большую гибкость, так как вы легко можете заменить конкретную реализацию, не нарушая контракт.

Ответ 2

IList

IList существует в пространстве имен System.Collections.

IList используется для доступа к элементу в определенной позиции/индексу в списке.

Как и IEnumerable, IList также лучше всего запрашивать данные из коллекций в памяти, таких как List, Array и т.д.

IList полезен, когда вы хотите добавить или удалить элементы из списка.

IList может узнать количество элементов в коллекции, не повторяя ее.

IList поддерживает отложенное выполнение.

IList не поддерживает дальнейшую фильтрацию.

IEnumerable

IEnumerable существует в пространстве имен System.Collections.

IEnumerable - это коллекция только вперед, она не может перемещаться назад и между элементами.

IEnumerable лучше всего запрашивать данные из коллекций в памяти, таких как List, Array и т.д.

IEnumerable не поддерживает добавление или удаление элементов из списка.

Используя Ienumerable, мы можем узнать количество элементов в коллекции после итерации коллекции.

IEnumerable поддерживает отложенное выполнение.

IEnumerable поддерживает дальнейшую фильтрацию.