当使用带有空Generic.List作为参数的AddRange时,Generic.List引发的Argument Exception

问题描述 投票:0回答:1

在我的程序中,我得到一个未处理的System.ArgumentException:“目标数组不够长。请检查destIndex和length,以及数组的下限。”尝试使用AddRange函数时。

调试时,我打破了行中的异常:

ListA.AddRange(ListB);

在调试器的监视工具中,我可以看到:

ListA: Count = 2454
ListB: Count = 0

通过documentation查找通用列表,未列出ArgumentException。

我在查明到底出了什么问题时是否丢失了任何东西?

编辑:从多个线程中调用使用AddRange的函数。

c# exception generic-list addrange
1个回答
0
投票

您的标题对此进行了说明。因为尝试向现有列表添加空列表,所以会出现参数异常。根据AddRange()函数的设计者,此操作无效。

ArgumentExceptions的用途很狭窄:

提供给方法的参数之一无效时抛出的异常。

因为它有一个目的,所以在每个函数调用中可能发生的每种情况都不需要特别提及。确实,应该鼓励您自己扔它。

为了避免这种情况,不要将空列表送入AddRange()。检查以下内容将是微不足道的:

if(ListB.Lent > 0){
  ListA.AddRange(ListB);
}

由于您提供了0个有关如何创建ListB的信息,所以我们不能告诉您为什么有时它有时为空。就是这样,很容易检查。

© www.soinside.com 2019 - 2024. All rights reserved.