#c#
#c#
Вопрос:
в настоящее время индекс a List<int>
может принимать значение Int32, могу ли я использовать Int64?
Поэтому я могу использовать что-то вроде mylist[1000000000000] .
Ответ №1:
Нет, вы не можете.
Это было бы бесполезно, если бы это было разрешено. Среда CLR имеет ограничение на максимальный размер объекта в 2 ГБ. Следовательно, даже невозможно создать массив, в котором long
индекс был бы полезен.
Комментарии:
1. Я считаю, что Mono использует 64-битные целые числа для индексов массива. Однако я не уверен, означает ли это, что их реализация List<> отличается.
2. Список может использовать другую стратегию для хранения своих элементов. Например, он может использовать какую-то древовидную структуру.
Ответ №2:
Вы не можете изменить интерфейс framework List<> , который определяет тип аргумента index как int
. Но вы могли бы создать свой собственный тип, который принимает long
индекс.
Как отметил JaredPar , вы не можете создать массив, достаточно большой, чтобы требовать 64-битный индекс. Если вы хотите создать список, в котором может храниться так много элементов, вам придется использовать какую-то древовидную структуру, или массивы массивов, или что-то в этом роде. И вам понадобится много памяти!
Ответ №3:
У вас может быть список, который будет содержать длинные значения или числа, превышающие 2 147 483 647.
List<long> list = new List<long>();
list.Add(3000000000) will work.
Комментарии:
1. автор имел в виду коллекцию с длинным (int64) индексом, а не коллекцию long с индексом int32