en cuenta lo siguiente:Asignación de matrices grandes; OutOfMemoryException VS OverflowException
long size = int.MaxValue;
long[] huge = new long[size]; // throws OutOfMemoryException
long[] huge = new long[size + 1]; // throws OverflowException
Sé que hay un límite de 2 GB en el tamaño de un objeto único, lo que explica la primera excepción, pero ¿Por qué aparece una excepción diferente una vez que el número de elementos supera los 32 bits?
(Estoy usando una computadora de 64 bits si eso es importante).
EDIT: I también pueden definir y usar un indexador que acepta un long
sin problemas:
internal sealed class MyClass
{
public object this[long x]
{
get
{
Console.WriteLine("{0}", x);
return null;
}
}
}
...
long size = int.MaxValue;
MyClass asdf = new MyClass();
object o = asdf[size * 50]; // outputs 107374182350
Use en su lugar una 'Lista' genérica que utiliza solo tanta memoria como sea necesario. –