我有这个C#代码,它抛出一个ArgumentOutOfRangeException,我想知道为什么?
ConcurrentStack<int> intsStack = new ConcurrentStack<int>();
int[] myInts = new int[0];
intsStack.PushRange(myInts);
Run Code Online (Sandbox Code Playgroud)
错误的Message属性ArgumentOutOfRangeException:
startIndex参数必须大于或等于零.
参数名称:startIndex
数组是空的但不是null,我没想到任何异常,只是没有任何东西被添加到堆栈中.这是否是一个合理的例外?
AddRange 的参数是一个空数组,因此您尝试将零个项目推入堆栈。所以这是一个非常合理的例外。
编辑:但你是对的,这是一个糟糕的异常消息。您可以猜测这是因为内部重载 PushRange(T[], Int32, Int32) 实际上抛出了异常。