問題を引き起こしている次のコードがあります。助けていただければ幸いです。
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: Destination array was not long十分な長さでした。リストをコピーしようとした2つの方法は次のとおりです
List<VehicleOption> newOptions = new List<VehicleOption>(Options);
と
List<VehicleOption> newOptions = new List<VehicleOption>();
newOptions.AddRange(Options);
これらはどちらも私に System.ArgumentException: Destination array was not long enough を与えました。
2)これらの方法のいずれかで例外が発生するのはなぜですか?
私は困惑しているので、助けていただければ幸いです。
ありがとう!