Призначення класу List — доступ до елементів за значенням індекса.
Загальне уявлення про клас List можна отримати, переглянувши код програми та проаналізувавши її виведенням для списку, у якому значення мають тип string.
У поданому далі описі:
Зауваження
Клас List<T> є універсальним еквівалентом класу ArrayList. Він втілює універсальний інтерфейс IList<T> за допомогою масиву, розмір якого динамічно збільшується при необхідності.
Засіб порівняння рівності як усталено типу T буде визначено таким чином. Якщо тип T втілює універсальний інтерфейс IEquatable<T>, засіб порівняння на рівність є методом Equals(T) цього інтерфейсу. Інакше буде використано Object.Equals (Object).
Засіб порівняння щодо упорядкування як усталено для типу T буде визначено таким чином. Якщо тип T втілює універсальний інтерфейс IComparable<T>, засібом порівняння як усталено є метод CompareTo(T) цього інтерфейсу. Інакше, якщо тип T втілює непороджений ним інтерфейс IComparable, засіб порівняння як усталено є методом CompareTo(Object) цього інтерфейсу. Якщо тип T не втілює інтерфейс, то немає засобу порівняння як усталено, а делегат порівняння чи порівняння потрібно надати явно.
Упорядкування List<T> не гарантовано. Необхідно упорядкувати список перед виконанням операцій (наприклад, BinarySearch), які вимагають упорядкування списку.
Доступ до елементів можна отримати за допомогою цілого індексу, починаючи з нуля.
Лише для платформи .NET Framework. Для великих об'єктів можна збільшити максимальну ємність до 2 мільярдів елементів у 64-розрядній системі, задавши властивості enabled елемента конфігурації <gcAllowVeryLargeObjects> в середовищі виконання значення true.
Список приймає null як допустиме значення для типів посилань і дозволяє дублювати елементи.
При прийнятті рішення про те, чи слід використовувати List<T> або ArrayList, обидва з яких мають аналогічну функціональність, потрібно пам'ятати, що List<T> працює краще у більшості випадків і є типобезпечним. Якщо використано тип посилань, поведінка двох класів ідентична.
Якщо використано тип значення, компілятор створює втілення класу List<T> спеціально для цього типу значення. Це означає, що елемент List<T> списку об'єкта не потрібно запакувати перед використанням елемента, а після створення близько 500 елементів списку пам'ять, збережена не елементами списку боксу, більше пам'яті, використаної для створення втілення класу.
Методи
Додаткові дані про явні втілення інтерфейсу, методи розширення потоко-безпечність подано на сторінці сайту learn.microsoft.com.