在我的程序中,我得到一个未处理的System.ArgumentException:“目标数组不够长。请检查destIndex和length,以及数组的下限。”尝试使用AddRange函数时。
调试时,我打破了行中的异常:
ListA.AddRange(ListB);
在调试器的监视工具中,我可以看到:
ListA: Count = 2454
ListB: Count = 0
通过documentation查找通用列表,未列出ArgumentException。
我在查明到底出了什么问题时是否丢失了任何东西?
编辑:从多个线程中调用使用AddRange的函数。
您的标题对此进行了说明。因为尝试向现有列表添加空列表,所以会出现参数异常。根据AddRange()函数的设计者,此操作无效。
ArgumentExceptions的用途很狭窄:
提供给方法的参数之一无效时抛出的异常。
因为它有一个目的,所以在每个函数调用中可能发生的每种情况都不需要特别提及。确实,应该鼓励您自己扔它。
为了避免这种情况,不要将空列表送入AddRange()。检查以下内容将是微不足道的:
if(ListB.Lent > 0){
ListA.AddRange(ListB);
}
由于您提供了0个有关如何创建ListB的信息,所以我们不能告诉您为什么有时它有时为空。就是这样,很容易检查。