gpt4 book ai didi

c# - 在 C# 中从列表 <> 中删除对象

转载 作者:行者123 更新时间:2023-11-30 20:40:47 25 4
gpt4 key购买 nike

我有一个控制台应用程序项目,它有一个列表。这包括添加、显示和删除项目的选项,但删除方法不起作用。当我删除某些内容时应用程序崩溃。请查看下面的代码并提出建议。

class Program
{
public List<CV_details> list = new List<CV_details>();

static void Main()
{
Program p = new Program();
int choice;
do
{
p.menu();
Console.Write("Enter Choice : ");
choice = Convert.ToInt32(Console.ReadLine());
if (choice == 3)
{
Console.Clear();
p.modify();
break;
}
} while (choice != 4);
}

void modify()
{
Console.Write("Enter ID you want to modify : ");
int id = Convert.ToInt32(Console.ReadLine());
var per = new CV_details();
foreach (var person in list)
{
if (person.getID() == id)
{
Console.WriteLine("Serial No. : " + person.getID());
Console.WriteLine("Name : {0} {1}", person.getFname(), person.getlname());
Console.WriteLine("Age : {0}", person.getAge());
Console.WriteLine("Degree : {0}", person.getdegree());
Console.WriteLine();
Console.WriteLine("1) To Delete CV");
Console.WriteLine("2) To Update");
int n;
Console.WriteLine("Enter Choice :");
n = Int32.Parse(Console.ReadLine());
if (n == 1)
{
list.Remove(person);
}
}
}
}
}

最佳答案

在遍历列表时不能从列表中删除。

一种方法是创建一个要删除的列表,然后在完成迭代后删除它们。

List<CV_details> deleteList = new List<CV_details>();
foreach (var person in list){
if (person.getID()==id)
{
//...
n = Int32.Parse(Console.ReadLine());
if (n == 1)
{
deleteList.Add(person);
}
}
}

foreach (var del in deleteList)
{
list.Remove(del);
}

您可以使用 Linq 以更少的代码行来完成此操作。

关于c# - 在 C# 中从列表 <> 中删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32925674/

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