编写代码后,可以归结为以下内容:
var size=-1;
var arr=new byte[size];
我很惊讶它抛出了一个OverflowException。OverflowException状态的文档:
我看不出如何为这个异常提供负大小和数组长度,因此深入研究了一下,发现这确实是指定的行为:
尺寸长度的计算值验证如下。如果一个或多个值小于零,则抛出 System.OverflowException 并且不执行进一步的步骤。
我想知道为什么选择了 OverflowException。如果你问我,这很容易产生误导。这花了我至少 5 分钟的调查时间(这里不算我的沉思)。任何人都可以阐明这个(在我看来)特殊的设计决定吗?