gpt4 book ai didi

c# - 无法删除 arraylist 中的项目

转载 作者:太空宇宙 更新时间:2023-11-03 19:44:59 26 4
gpt4 key购买 nike

案例:

我正在将对象添加到我的数组列表中,在我将对象添加到我的数组列表之前,我检查它是否不存在。之后,我尝试将完整的数组列表重写到文本文件中。

代码:

WaardeObjecten obj = new WaardeObjecten(index.ToString(), allFiles[index].ToString(), values[0], values[1], values[2], values[3], values[4], values[5], values[6], values[7], values[8], values[9], values[10], values[11], values[12], values[13], values[14], values[15], values[16], values[17]);    

//Check if duplcatie
foreach (WaardeObjecten item in listOfWaardeObjecten)
{
if (item.getIndex() == obj.getIndex())
{
listOfWaardeObjecten.Remove(item);
}
}

//Add to arraylist
listOfWaardeObjecten.Add(obj);

//writedata to log file
writeLogFile();

将所有 arraylist 元素写入 .txt 文件的代码:

//Creating a streamwriter to write to the file with the path of logFileName.
using (FileStream fs = new FileStream(logFileName, FileMode.Truncate, FileAccess.Write))
using (var sw = new StreamWriter(fs))
{
foreach (WaardeObjecten item in listOfWaardeObjecten)
{
sw.WriteLine(item.getTotalString());
}
}

现在我收到以下错误:

"An unhandled exception of type 'System.InvalidOperationException' occurred in mscorlib.dll."

"Additional Information: The collection has been changed. The inventory operation may not be performed."

更新

我现在用来删除重复项的代码:

//Check if duplcatie
for (int i = listOfWaardeObjecten.Count - 1; i >= 0; i--)
{
if (i == obj.getIndex())
{
listOfWaardeObjecten.RemoveAt(i);
}
}

//Add to arraylist
listOfWaardeObjecten.Add(obj);

//writedata to log file
writeLogFile();

我用来编写文本文件的代码:

//Creating a streamwriter to write to the file with the path of logFileName.
using (FileStream fs = new FileStream(logFileName, FileMode.Truncate, FileAccess.Write))
using (var sw = new StreamWriter(fs))
{
foreach (WaardeObjecten item in listOfWaardeObjecten)
{
sw.WriteLine(item.getTotalString());
}
}

如果我先用所有不同的值制作 10-15 张图像,然后倒回第一张图像并将所有值都放在“N.v.t.”上,则输出:

 2. C:\Users\Gebruiker\Desktop\MCA JPG2\05_Mechanical\01_Equipment\1100-final\A-1101-OSBL\99_History\fotos\A 1101 laadarm04.JPG : Discipline: Preset1 | Soort: Preset1 | Afdruk: Preset1 | Test1: Preset1 | Test2: Preset1 | Test3: Preset1 | Test4: Preset1 | Test5: Preset1 | Test6: Preset1.
4. C:\Users\Gebruiker\Desktop\MCA JPG2\05_Mechanical\01_Equipment\1100-final\A-1101-OSBL\99_History\fotos\A 1101 laadarm06.JPG : Discipline: Preset1 | Soort: Preset1 | Afdruk: Preset1 | Test1: Preset1 | Test2: Preset1 | Test3: Preset1 | Test4: Preset1 | Test5: Preset1 | Test6: Preset1.
6. C:\Users\Gebruiker\Desktop\MCA JPG2\05_Mechanical\01_Equipment\1100-final\A-1101-OSBL\99_History\fotos\A 1101 laadarm08.JPG : Discipline: Preset1 | Soort: Preset1 | Afdruk: Preset1 | Test1: Preset1 | Test2: Preset1 | Test3: Preset1 | Test4: Preset1 | Test5: Preset1 | Test6: Preset1.
8. C:\Users\Gebruiker\Desktop\MCA JPG2\05_Mechanical\01_Equipment\1100-final\A-1101-OSBL\99_History\fotos\Detail tbv blisemafleiding A-1101.jpg : Discipline: Preset1 | Soort: Preset1 | Afdruk: Preset1 | Test1: Preset1 | Test2: Preset1 | Test3: Preset1 | Test4: Preset1 | Test5: Preset1 | Test6: Preset1.
10. C:\Users\Gebruiker\Desktop\MCA JPG2\05_Mechanical\01_Equipment\1100-final\A-1101-OSBL\99_History\fotos\IMG-20131108-01010.jpg : Discipline: Preset1 | Soort: Preset1 | Afdruk: Preset1 | Test1: Preset1 | Test2: Preset1 | Test3: Preset1 | Test4: Preset1 | Test5: Preset1 | Test6: Preset1.
1. C:\Users\Gebruiker\Desktop\MCA JPG2\05_Mechanical\01_Equipment\1100-final\A-1101-OSBL\99_History\fotos\A 1101 laadarm02.JPG : Discipline: N.v.t. | Soort: N.v.t. | Afdruk: N.v.t. | Test1: N.v.t. | Test2: N.v.t. | Test3: N.v.t. | Test4: N.v.t. | Test5: N.v.t. | Test6: N.v.t..
3. C:\Users\Gebruiker\Desktop\MCA JPG2\05_Mechanical\01_Equipment\1100-final\A-1101-OSBL\99_History\fotos\A 1101 laadarm05.JPG : Discipline: N.v.t. | Soort: N.v.t. | Afdruk: N.v.t. | Test1: N.v.t. | Test2: N.v.t. | Test3: N.v.t. | Test4: N.v.t. | Test5: N.v.t. | Test6: N.v.t..
5. C:\Users\Gebruiker\Desktop\MCA JPG2\05_Mechanical\01_Equipment\1100-final\A-1101-OSBL\99_History\fotos\A 1101 laadarm07.JPG : Discipline: N.v.t. | Soort: N.v.t. | Afdruk: N.v.t. | Test1: N.v.t. | Test2: N.v.t. | Test3: N.v.t. | Test4: N.v.t. | Test5: N.v.t. | Test6: N.v.t..
7. C:\Users\Gebruiker\Desktop\MCA JPG2\05_Mechanical\01_Equipment\1100-final\A-1101-OSBL\99_History\fotos\beschadigde isolatie.jpg : Discipline: N.v.t. | Soort: N.v.t. | Afdruk: N.v.t. | Test1: N.v.t. | Test2: N.v.t. | Test3: N.v.t. | Test4: N.v.t. | Test5: N.v.t. | Test6: N.v.t..
9. C:\Users\Gebruiker\Desktop\MCA JPG2\05_Mechanical\01_Equipment\1100-final\A-1101-OSBL\99_History\fotos\Foto tbv bliksemafleiding 1.jpg : Discipline: N.v.t. | Soort: N.v.t. | Afdruk: N.v.t. | Test1: N.v.t. | Test2: N.v.t. | Test3: N.v.t. | Test4: N.v.t. | Test5: N.v.t. | Test6: N.v.t..
11. C:\Users\Gebruiker\Desktop\MCA JPG2\05_Mechanical\01_Equipment\1100-final\C-1106-final\99_History\Inspecties\DSC00864.JPG : Discipline: N.v.t. | Soort: N.v.t. | Afdruk: N.v.t. | Test1: N.v.t. | Test2: N.v.t. | Test3: N.v.t. | Test4: N.v.t. | Test5: N.v.t. | Test6: N.v.t..
12. C:\Users\Gebruiker\Desktop\MCA JPG2\05_Mechanical\01_Equipment\1100-final\C-1107-fnal\99_History\Inspecties\DSC00864.JPG : Discipline: N.v.t. | Soort: N.v.t. | Afdruk: N.v.t. | Test1: N.v.t. | Test2: N.v.t. | Test3: N.v.t. | Test4: N.v.t. | Test5: N.v.t. | Test6: N.v.t..
13. C:\Users\Gebruiker\Desktop\MCA JPG2\05_Mechanical\01_Equipment\1100-final\H-1104-final\99_History\Inspecties\100_0671.JPG : Discipline: N.v.t. | Soort: N.v.t. | Afdruk: N.v.t. | Test1: N.v.t. | Test2: N.v.t. | Test3: N.v.t. | Test4: N.v.t. | Test5: N.v.t. | Test6: N.v.t..
14. C:\Users\Gebruiker\Desktop\MCA JPG2\05_Mechanical\01_Equipment\1100-final\P-1111-final\99_History\Onderhouds rapportages\2014 wk50 div schades\P-1111 eerste schadepomp 2.JPG : Discipline: N.v.t. | Soort: N.v.t. | Afdruk: N.v.t. | Test1: N.v.t. | Test2: N.v.t. | Test3: N.v.t. | Test4: N.v.t. | Test5: N.v.t. | Test6: N.v.t..

如您所见,并非所有值都是对“N.v.t.”的更新。

希望大家帮忙!

最佳答案

在集合上使用 foreach 循环时,您不能修改/删除集合中的项目。但是,如果您想从集合中删除项目,请改用 for 循环。

for (int i = listOfWaardeObjecten.Count-1; i >= 0; i--)
{
if (i == obj.getIndex())
{
listOfWaardeObjecten.RemoveAt(i);
}
}

如果您不想使用 for 循环,则可以使用 break 语句和 foreach 循环。 See here .

关于c# - 无法删除 arraylist 中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46909104/

26 4 0
文章推荐: css - div CSS 上的右 Angular 丝带
文章推荐: c# - 是否可以在单次迭代中延迟加载和类型转换对象?
文章推荐: html - 如何在不弄乱边框的情况下将