List<string>
- это класс с закрытым членом, string[]
. Документация MSDN утверждает этот факт в нескольких местах. Класс List в основном является классом-оберткой вокруг массива, который дает массиву другие функциональные возможности.
Ответ на который быстрее, все зависит от того, что вы пытаетесь сделать со списком / массивом. Для доступа и присваивания значений элементам массив, вероятно, пренебрежимо быстрее, поскольку List является абстракцией массива (как сказал Джон Скит).
Если вы намереваетесь иметь структуру данных, которая со временем растет (получает все больше и больше элементов), производительность (средняя скорость) в отношении Списка начнет сиять. Это потому, что каждый раз, когда вы изменяете размер массива для добавления другого элемента, это операция O (n). Когда вы добавляете элемент в список (а список уже заполнен), размер списка удваивается. Я не буду вдаваться в подробности, но в основном это означает, что увеличение размера списка в среднем является операцией O (log n). Конечно, у этого есть и недостатки (вы можете выделить почти вдвое больше памяти, чем вам действительно нужно, если вы пропустите только пару элементов после последней емкости).
Редактировать: я немного запутался в параграфе выше. Как сказал Эрик ниже, количество измененных размеров для List равно O (log n), но фактическая стоимость, связанная с изменением размера массива, амортизируется до O (1).