LISTAddRangethrowsArgumentException我有一个特殊的方法,偶尔会因ArgumentException崩溃:目标数组不够长。检查destIndex和长度,以及数组的下限。:在System.Array.Copy(ArraysourceArray,Int32sourceIndex,ArraydestinationArray,Int32destinationIndex,Int32length,Booleanreliable)atSystem.Collections.Generic.List`1.CopyTo(T[]array,Int32arrayIndex)atSystem.Collections.Generic.List`1.InsertRange(Int32index,IEnumerable`1collection)atSystem.Collections.Generic.List`1.AddRange(IEnumerable`1collection)导致的代码这次崩溃看起来像这样:Listobjects=newList(100);objects=FindObjects(someParam);objects.AddRange(FindObjects(someOtherParam);根据MSDN,List.AddRange()应该根据需要自动调整大小:如果新的Count(当前Count加上集合的大小)将大于Capacity,则增加容量aList<(Of)>)通过自动重新分配内部数组以容纳新元素,并在添加新元素之前将现有元素复制到新数组。谁能想到AddRange会抛出此异常的情况?编辑:回答有关FindObjects()方法的问题。它基本上是这样的:ListretObjs=newList();foreach(MyObjectobjinobjectList){if(someCondition)retObj.Add(obj);您是否尝试从多个线程更新同一个列表?这可能会导致问题……列表对于多个作者来说并不安全。老实说,我不确定,但为什么列表初始化中的大小声明没有被删除?以上就是C#学习教程的全部内容:LISTAddRangethrowsArgumentException。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注—List``list=newList``本文来自网络合集,不代表立场,如有不妥涉及侵权,请点击维权联系管理员删除。如需转载请注明出处:
