gpt4 book ai didi

c# - 在异常到达后的对象列表中添加 'AddRange()' 元素时

转载 作者:行者123 更新时间:2023-12-05 05:22:10 26 4
gpt4 key购买 nike

“源数组不够长。检查 srcIndex 和长度,以及数组的下限。”

我在创建目标列表(在我添加对象的地方)和源列表(从我在目标列表中添加对象的地方)时没有提到任何大小

这是我正在做的类似代码。

List<Obj> sourceList = respObj.List;

if (sourceList != null)
{
destinationList.AddRange(sourceList);
}

此处 sourceList 是从方法调用返回的,而且我在创建它时也没有提及任何大小或索引。就这么简单。

//destination list is globally declared, and initialized in constructor
public List<Obj> destinationList;
//Constructor
public Class()
{
destinationList = new List<Obj>();
}

List<Obj> Method()
{
List<Obj> sourceList = new List<Obj>();
foreach(Obj obj in AlreadyGeneratedObjList)
{
if(SatisfyingCondition(obj))
{
sourceList.Add(obj);
}
}
return sourceList;
}

“AddRange()”方法发生异常

最佳答案

我假设 destinationList声明为

var destinationList = [?]{}; // ? being some size

问题在于您的数组无法自动调整大小,而这正是 .AddRange() 所需要的。能够添加 sourceList 的内容进入其中。

解决这个问题的方法是声明 destinationList作为列表

var destinationList = new List<obj>{};

或作为具有正确大小的数组,即。大小可容纳 sourceList 的大小过滤后。不过,这可能不是解决问题的最佳方法。

我个人的建议是使用 List<> .

另外不要忘记检查过滤后的 sourceList不为空或 null。

编辑

你应该考虑如下改变它

if (sourceList != null && sourceList.Count > 0)
{
destinationList.AddRange(sourceList);
}
else
{
//destinationList = sourceList;
// If the sourceList is ever null it will make every subsequent call
// destinationList fail with a NullReference exception.

destinationList.Clear();
}

关于c# - 在异常到达后的对象列表中添加 'AddRange()' 元素时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41216851/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com