Как удалить последний элемент, добавленный в список?

У меня есть список в С#, в котором я добавляю поля списка. Теперь при добавлении я должен проверить условие, если условие удовлетворяет, тогда мне нужно удалить последнюю строку, добавленную из списка. Вот мой пример кода.

    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

            }

        }

Итак, мой вопрос заключается в том, как удалить последнюю строку из списка в С#. Пожалуйста, помогите мне.

Ответы

Ответ 1

Прямой ответ на этот вопрос:

if(rows.Any()) //prevent IndexOutOfRangeException for empty list
{
    rows.RemoveAt(rows.Count - 1);
}

Однако... в конкретном случае этого вопроса имеет смысл не добавлять строку в первую очередь:

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

if (!row.cell[0].Equals("Something"))
{
    rows.Add(row);
}

TBH, я бы пошел дальше, протестировав "Something" против user."", И даже не создавая экземпляр Row если условие не выполнено, но рассматривая как user."" Не скомпилируется, я оставлю это как упражнение для читателя.

Ответ 2

Я думаю, что самый эффективный способ сделать это - использовать RemoveAt:

rows.RemoveAt(rows.Count - 1)

Ответ 3

rows.RemoveAt(rows.Count - 1);

Ответ 4

Попробуйте следующее:

rows.Remove(rows.Last());

Ответ 5

Вы можете использовать метод List<T>.RemoveAt:

rows.RemoveAt(rows.Count -1);

Ответ 6

если вам нужно делать это чаще, вы можете даже создать свой собственный метод для выталкивания последнего элемента; что-то вроде этого:

public void pop(List<string> myList) {
    myList.RemoveAt(myList.Count - 1);
}

или даже вместо void вы можете вернуть значение как:

public string pop (List<string> myList) {
    // first assign the  last value to a seperate string 
    string extractedString = myList(myList.Count - 1);
    // then remove it from list
    myList.RemoveAt(myList.Count - 1);
    // then return the value 
    return extractedString;
}

просто обратите внимание, что возвращаемый тип второго метода не void, это строка b/c, мы хотим, чтобы эта функция возвращала нам строку...