在编写可以简化为以下代码的代码后:
var size=-1;
var arr=new byte[size];
我很惊讶它抛出了OverflowException。OverflowException的文档说明如下:
我无法理解为什么为数组长度提供负数大小符合此异常的描述,因此深入研究后发现这确实是指定的行为:
我想知道为什么选择了OverflowException。如果你问我,这很误导人。这至少让我调查了5分钟(不算我在这里的思考)。有人能解释一下这个(在我看来)奇怪的设计决定吗?维度长度的计算值按以下方式进行验证。如果一个或多个值小于零,则会抛出System.OverflowException,并且不再执行其他步骤。