は、次のことを考えてみましょう:大きな配列の割り当て。 OutOfMemoryException VS OverflowExceptionが
long size = int.MaxValue;
long[] huge = new long[size]; // throws OutOfMemoryException
long[] huge = new long[size + 1]; // throws OverflowException
私は最初の例外を説明し、単一のオブジェクトのサイズに2GBの制限がある知っているが、なぜ私は要素の数いったん別の例外を得るのですか32ビットを上回る?
(これは重要な場合は64ビットコンピュータを使用しています)
編集:私はまた、問題なくlong
を受け付けるインデクサを定義して使用することができる:
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
代わりに、必要に応じて多くのメモリしか使用しない汎用リスト 'List'を使用してください。 –