我有以下给我带来问题的代码,我将不胜感激:
private static string CreateOptionString(List<VehicleOption> Options)
{
StringBuilder returnValue = new StringBuilder();
foreach (VehicleOption option in Options)
{
if (option.OptionStatus == ExtendedResponse.OptionState.Included)
{
if (returnValue.Length > 0)
{
returnValue.Append(", ");
}
returnValue.Append(option.OptionName);
}
}
return returnValue.ToString();
}
我最初的问题是我在 foreach 循环中收到 System.InvalidOperationException: collection was modified 错误。
1)我仍然无法弄清楚为什么我会收到这个错误,因为我没有看到它被修改的任何地方。
有人建议我将列表复制到新列表并循环遍历新列表。我这样做了,它摆脱了 InvalidOperationException。但是,我尝试了 2 种不同的方式来处理列表,并且都给了我一个 System.ArgumentException:目标数组不够长。这是我尝试复制列表的两种方法
List<VehicleOption> newOptions = new List<VehicleOption>(Options);
和
List<VehicleOption> newOptions = new List<VehicleOption>();
newOptions.AddRange(Options);
这两个都给了我一个 System.ArgumentException:目标数组不够长。
2)为什么这些方法中的任何一种都会给我这个例外?
任何帮助将不胜感激,因为我很难过。
谢谢!