40 億バイトの配列を割り当てようとしたかったのですが、これが私の C# コードです。
long size = 4 * 1000;
size *= 1000;
size *= 1000;
byte[] array = new byte[size];
このコードは、System.OverflowExceptionを含む行で失敗しますnew。Lengthさて、 returnsが判明したintため、配列の長さもint保存できる長さに制限されています。
では、なぜコンパイル時エラーが発生longせず、割り当て時に配列要素の数として使用できるのでしょうか?