Почему «long» допускается как длина массива в C #?

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

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

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

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

Ответы на вопрос(5)

Ваш ответ на вопрос