Обоснование исключения OverflowException с отрицательным размером массива?

После написания кода, который можно свести к следующему:

var size=-1;
var arr=new byte[size];

я был удивлен, что он выбросил OverflowException . В документации для OverflowException состояния:

Исключение, которое выдается, когда арифметическая операция, операция преобразования или преобразования в проверенном контексте приводит к переполнению.

Я не мог понять, как предоставить отрицательный размер для и длина массива соответствуют описанию, данному для этого исключения, поэтому углубились немного глубже и обнаружили, что это действительно указанное поведение:

Вычисленные значения длин измерений проверяются следующим образом. Если одно или несколько значений меньше нуля, System. Возникает исключение OverflowException, и дальнейшие шаги не выполняются.

Интересно, почему было выбрано исключение OverflowException. Если вы спросите меня, это вводит в заблуждение. Это стоило мне как минимум 5 минут исследования (не считая моих размышлений здесь). Может ли кто-нибудь пролить свет на это (на мой взгляд) своеобразное дизайнерское решение?

6
задан spender 21 September 2010 в 15:51
поделиться