actualmente el índice a List<int>
puede tomar es Int32, ¿puedo usar Int64?¿Puedo construir una lista larga <int> de manera que el índice sea largo?
Entonces puedo usar algo como mi lista [1000000000000].
actualmente el índice a List<int>
puede tomar es Int32, ¿puedo usar Int64?¿Puedo construir una lista larga <int> de manera que el índice sea largo?
Entonces puedo usar algo como mi lista [1000000000000].
No, no puedes.
Esto no sería útil si se permitiera. El CLR tiene un límite en el tamaño máximo de un objeto a 2 GB. Por lo tanto, ni siquiera es posible construir una matriz donde un índice long
sería útil.
No se puede cambiar la lista de estructura <> interfaz, que especifica el tipo del argumento de índice como int
. Pero podría crear su propio tipo que toma un índice long
.
Como observó JaredPar, no puede crear una matriz lo suficientemente grande como para requerir un índice de 64 bits. Si desea crear una lista que pueda almacenar tantos elementos, tendrá que utilizar algún tipo de estructura de árbol, o arrays de matrices, o algo así. ¡Y necesitarás mucha memoria!
Puede tener una lista que contenga valores largos, o números superiores a 2,147,483,647.
List<long> list = new List<long>();
list.Add(3000000000) will work.
Creo que Mono usa 64bit ints para índices de matriz. No estoy seguro si esto significa que su implementación de List <> es diferente. –
La lista podría usar otra estrategia para almacenar sus artículos. Por ejemplo, podría usar algún tipo de estructura de árbol. – phoog