Почему в C# в качестве длины массива разрешено использовать «long»?

Я хотел попытаться выделить массив размером 4 миллиарда байт, и вот мой код C#:

long size = 4 * 1000;
size *= 1000;
size *= 1000;
byte[] array = new byte[size];

этот код завершается ошибкой с System.OverflowExceptionв строке, содержащей новый. Хорошо, получается, что Lengthвозвращает int, поэтому длина массива также ограничена тем, что может хранить int.

Тогда почему нет ошибки времени компиляции и longразрешено использовать в качестве количества элементов массива при распределении?

16
задан sharptooth 8 June 2012 в 08:27
поделиться