How to use Remove, RemoveAt, RemoveRange methods in C# list collections?

C# provides several methods to remove elements from List<T> collections. The Remove() method removes the first occurrence of a specific value, RemoveAt() removes an element at a specific index, and RemoveRange() removes multiple consecutive elements.

Syntax

Following is the syntax for the three removal methods −

// Remove by value (first occurrence)
bool Remove(T item)

// Remove by index
void RemoveAt(int index)

// Remove range of elements
void RemoveRange(int index, int count)

Parameters

  • Remove(T item): The item to remove from the list. Returns true if item is found and removed.

  • RemoveAt(int index): Zero-based index of the element to remove.

  • RemoveRange(int index, int count): Starting index and number of elements to remove.

Using Remove() and RemoveAt() Methods

The Remove() method searches for the specified value and removes its first occurrence, while RemoveAt() removes the element at the specified index position −

using System;
using System.Collections.Generic;

class Program {
    static void Main() {
        List<string> myList = new List<string>() {
            "mammals",
            "reptiles",
            "amphibians",
            "vertebrate"
        };

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

        Console.WriteLine("\nAfter Remove('reptiles'):");
        myList.Remove("reptiles");
        foreach (string item in myList) {
            Console.WriteLine(item);
        }

        Console.WriteLine("\nAfter RemoveAt(1):");
        myList.RemoveAt(1);
        foreach (string item in myList) {
            Console.WriteLine(item);
        }
    }
}

The output of the above code is −

Initial list:
mammals
reptiles
amphibians
vertebrate

After Remove('reptiles'):
mammals
amphibians
vertebrate

After RemoveAt(1):
mammals
vertebrate

Using RemoveRange() Method

The RemoveRange() method removes a specified number of consecutive elements starting from a given index −

using System;
using System.Collections.Generic;

class Program {
    static void Main() {
        List<int> myList = new List<int>() {
            5, 10, 15, 20, 25, 30, 35
        };

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

        Console.WriteLine("\nAfter RemoveRange(2, 3):");
        myList.RemoveRange(2, 3); // Remove 3 elements starting at index 2
        
        foreach (int item in myList) {
            Console.WriteLine(item);
        }
    }
}

The output of the above code is −

Initial list:
5
10
15
20
25
30
35

After RemoveRange(2, 3):
5
10
30
35

Comparison of Removal Methods

Method Removes By Return Value Use Case
Remove() Value (first occurrence) bool (true if removed) When you know the value to remove
RemoveAt() Index position void When you know the exact position
RemoveRange() Index range void When removing multiple consecutive elements

Handling Edge Cases

Here's an example that demonstrates safe removal practices with bounds checking −

using System;
using System.Collections.Generic;

class Program {
    static void Main() {
        List<string> fruits = new List<string>() {
            "apple", "banana", "cherry", "date", "elderberry"
        };

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

        // Safe Remove - returns false if item not found
        bool removed = fruits.Remove("grape");
        Console.WriteLine("Remove 'grape': " + removed);

        // Safe RemoveAt with bounds checking
        int indexToRemove = 10;
        if (indexToRemove < fruits.Count) {
            fruits.RemoveAt(indexToRemove);
        } else {
            Console.WriteLine("Index " + indexToRemove + " is out of bounds");
        }

        // Safe RemoveRange
        int startIndex = 1;
        int count = 2;
        if (startIndex + count <= fruits.Count) {
            fruits.RemoveRange(startIndex, count);
            Console.WriteLine("After RemoveRange(1, 2): " + string.Join(", ", fruits));
        }
    }
}

The output of the above code is −

Original list: apple, banana, cherry, date, elderberry
Remove 'grape': False
Index 10 is out of bounds
After RemoveRange(1, 2): apple, date, elderberry

Conclusion

The Remove(), RemoveAt(), and RemoveRange() methods provide flexible ways to remove elements from C# lists. Use Remove() when you know the value, RemoveAt() for specific positions, and RemoveRange() for removing multiple consecutive elements efficiently.

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

1K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements