How to pop the first element from a C# List?

To pop the first element from a C# List, you can use the RemoveAt() method with index 0. This method removes the element at the specified position and shifts all subsequent elements one position to the left.

Unlike traditional stack pop operations that return the removed element, RemoveAt() only removes the element. If you need both removal and retrieval, you must first get the element before removing it.

Syntax

Following is the syntax for removing the first element −

list.RemoveAt(0);

Following is the syntax for popping (retrieving and removing) the first element −

T firstElement = list[0];
list.RemoveAt(0);

Using RemoveAt() to Remove First Element

The RemoveAt(0) method removes the element at index 0 (the first element) from the list −

using System;
using System.Collections.Generic;

class Program {
   static void Main() {
      List<string> myList = new List<string>() {
         "Operating System",
         "Computer Networks",
         "Compiler Design"
      };

      Console.WriteLine("Initial list:");
      foreach (string item in myList) {
         Console.WriteLine(item);
      }

      Console.WriteLine("\nRemoving first element from the list...");
      myList.RemoveAt(0);

      Console.WriteLine("List after removal:");
      foreach (string item in myList) {
         Console.WriteLine(item);
      }
   }
}

The output of the above code is −

Initial list:
Operating System
Computer Networks
Compiler Design

Removing first element from the list...
List after removal:
Computer Networks
Compiler Design

Creating a Pop Method for Lists

Since List<T> doesn't have a built-in pop method, you can create an extension method that both retrieves and removes the first element −

using System;
using System.Collections.Generic;

public static class ListExtensions {
   public static T PopFirst<T>(this List<T> list) {
      if (list.Count == 0) {
         throw new InvalidOperationException("Cannot pop from empty list");
      }
      T firstElement = list[0];
      list.RemoveAt(0);
      return firstElement;
   }
}

class Program {
   static void Main() {
      List<int> numbers = new List<int>() { 10, 20, 30, 40 };

      Console.WriteLine("Original list: " + string.Join(", ", numbers));

      int poppedElement = numbers.PopFirst();
      Console.WriteLine("Popped element: " + poppedElement);
      Console.WriteLine("List after pop: " + string.Join(", ", numbers));

      int anotherPop = numbers.PopFirst();
      Console.WriteLine("Popped element: " + anotherPop);
      Console.WriteLine("Final list: " + string.Join(", ", numbers));
   }
}

The output of the above code is −

Original list: 10, 20, 30, 40
Popped element: 10
List after pop: 20, 30, 40
Popped element: 20
Final list: 30, 40

Handling Empty Lists

Always check if the list is empty before attempting to remove elements to avoid exceptions −

using System;
using System.Collections.Generic;

class Program {
   static void Main() {
      List<string> emptyList = new List<string>();
      List<string> normalList = new List<string>() { "First", "Second" };

      // Safe removal with check
      if (normalList.Count > 0) {
         string firstElement = normalList[0];
         normalList.RemoveAt(0);
         Console.WriteLine("Removed: " + firstElement);
         Console.WriteLine("Remaining count: " + normalList.Count);
      }

      // Attempting on empty list (safe)
      if (emptyList.Count > 0) {
         emptyList.RemoveAt(0);
      } else {
         Console.WriteLine("Cannot remove from empty list");
      }
   }
}

The output of the above code is −

Removed: First
Remaining count: 1
Cannot remove from empty list

Performance Considerations

Operation Time Complexity Notes
RemoveAt(0) O(n) All remaining elements must be shifted left
RemoveAt(last index) O(1) No shifting required
LinkedList RemoveFirst() O(1) Better for frequent first-element removal

Conclusion

Use RemoveAt(0) to remove the first element from a C# List. For frequent first-element removals, consider using LinkedList<T> instead, as it provides O(1) removal performance. Always check for empty lists before removal to prevent exceptions.

Updated on: 2026-03-17T07:04:35+05:30

34K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements