C#从结构列表中删除数据

时间:2017-04-07 23:27:09

标签: c# list methods structure

我是C#的新生,我有一个项目,我有点坚持。 我需要创建一个使用索引\ ID号来查找和删除员工信息的方法。

这使用了一种结构,"员工"和一份清单,"员工"我只是迷失了我应该从列表中删除所有信息的方式。我是否将所有字段值(包括字符串)设置为0?

以下是我为此方法提供的说明 - " c)DeleteEmployee()将员工的索引作为参数。使用参数值"

删除员工
private int DeleteEmployee (int index)
    {
        foreach (Employee E in employees)
        {
            if (index == E.id) {}
// i'm just stuck on what to do from this point       
        }

// return zero is just here temporarily
        return 0;
    }

1 个答案:

答案 0 :(得分:4)

不允许修改您在foreach循环中枚举的序列。如果您想通过索引从列表中删除项目,请使用RemoveAt

employees.RemoveAt(index);

如果您想按某些条件删除项目,请使用RemoveAll

employees.RemoveAll(e => e.id == index)
  

我应该如何从列表中删除所有信息。我   将所有字段值(包括字符串)设置为0?

您应该明白,员工列表只是一个包含员工对象引用的数组(您可以将引用视为内存中对象数据所在的地址)。修改员工字段不会从列表中删除引用。列表仍将引用相同的员工对象,但所有字段都设置为默认值。要从列表中删除员工,您应该删除对员工对象的引用。可以使用RemoveRemoveAtRemoveAll方法实现这一目标。