Кажется довольно странным, что ваш value
является либо list<T>
, либо T
.
Без дополнительной информации я предлагаю вам реализовать это, используя один длинный список T.
Затем вы переведете myList<T>[i,j]
на базовый list<T>[ i * numRows + j]
.
Посыпать проверки по мере необходимости.
Если вы действительно, действительно должны использовать списки списков, выясните, хотите ли вы получить прямоугольную матрицу (то есть список в строке i
имеет то же количество элементов, что и список в строке j
), или в шахматном порядке (где каждый список имеет независимое количество элементов).
Если вы в первом случае, подумайте о создании и заполнении списков строк автоматически с соответствующим количеством элементов (используйте default<T>
для их инициализации)
Обновление:
Тогда, если вам действительно нужна прямоугольная матрица, используйте список.
Он будет иметь элементы numRows * numColumns.
Представьте, что вместо того, чтобы поместить одну строку под другую, чтобы создать матрицу, вы размещаете элементы строки один за другим.
Итак, если у вас есть:
11 12 13
21 22 23
31 32 33
в форме списка они будут
11 12 13 21 22 23 31 32 33
Существует простое преобразование между координатами X и Y (или i и j) в первой форме и индексом в списке во второй форме.