如何删除添加到List中的最后一个元素?

Pra*_*nav 33 c# list arraylist

我在c#中有一个List,我在其中添加列表字段.现在添加i时必须检查条件,如果条件满足,那么我需要删除列表中添加的最后一行.这是我的示例代码..

    List<> rows = new List<>();
    foreach (User user in users)
    {
        try
        {
            Row row = new Row();
            row.cell = new string[11];
            row.cell[1] = user."";
            row.cell[0] = user."";
            row.cell[2] = user."";         

            rows.Add(row);

            if (row.cell[0].Equals("Something"))
            {

                //here i have to write code to remove last row from the list
                //row means all the last three fields

            }

        }
Run Code Online (Sandbox Code Playgroud)

所以我的问题是如何从c#中的列表中删除最后一行.请帮我.

Pat*_*man 82

我认为最有效的方法是使用RemoveAt:

rows.RemoveAt(rows.Count - 1)
Run Code Online (Sandbox Code Playgroud)


spe*_*der 36

现在看到这个问题在搜索引擎中表现得很好,这个问题的直接答案是:

if(rows.Any()) //prevent IndexOutOfRangeException for empty list
{
    rows.RemoveAt(rows.Count - 1);
}
Run Code Online (Sandbox Code Playgroud)

但是......在这个问题的具体情况下,首先不添加行更有意义:

Row row = new Row();
//...      

if (!row.cell[0].Equals("Something"))
{
    rows.Add(row);
}
Run Code Online (Sandbox Code Playgroud)

TBH,我会更进一步通过测试"Something"user."",甚至不是一个实例Row,除非满足该条件,但看到user.""将无法编译,我会离开,作为一个练习留给读者.

  • @DrMcCleod 鉴于这个问题在搜索引擎上的流行,我已经为那些寻求快速解决方案的人进行了编辑。 (3认同)
  • 我正在尝试使用 `rows.RemoveAt(^1)` 但它无法编译:`参数 1: 无法从 'System.Index' 转换为 'int'` 我认为 `Index` 类型不起作用对于 `RemoveAt()` 方法。 (3认同)

小智 11

rows.RemoveAt(rows.Count - 1);
Run Code Online (Sandbox Code Playgroud)

  • 该死的,就像C#中的pop_back()方法一样?那有点糟透了. (3认同)

Sel*_*enç 7

你可以使用List<T>.RemoveAt方法:

rows.RemoveAt(rows.Count -1);
Run Code Online (Sandbox Code Playgroud)