Проблема заключается в том, что значения массива инициализируются значением по умолчанию, а значением по умолчанию для ссылочных типов является null
.
default(List<string>)
возвращает null
.
Итак,вам нужно будет повторно инициализировать объекты в массиве, прежде чем вы сможете получить к ним доступ, в противном случае вы получите NullReferenceException
.
Один из способов инициализации всех объектов в вашем массиве - это использоватьОператор Linq:
const int sizeOfLists = 5;
List<string>[] lists = Enumerable.Range(0, sizeOfLists)
.Select(i => new List<string>())
.ToArray();
Другой вариант - инициализировать и добавлять подсписки только тогда, когда они вам нужны, используя внешний список:
var lists = new List<List<string>>();
// ...
var aSubList = new List<string>();
lists.Add(aSubList);
Это особенно полезно, если выне знаю размера внешнего набора списков заранее и все еще доступен по индексу.
(Это был комментарий ранее, но я сделал его ответом, так как многие другие ответы были захваченырешение и не описывать проблему)