IEnumerable interface is used when we want to ITERATE among our collection classes using a FOREACH loop.
In C#, IEnumerable is an interface that represents a sequence of objects that can be enumerated. It is defined in the System.Collections namespace. The IEnumerable interface provides a standard way to iterate over a collection using a foreach loop or LINQ operators.
Here's an example that demonstrates IEnumerable:
using System;
using System.Collections;
using System.Collections.Generic;
public class MyClass : IEnumerable<string>
{
    private List<string> items = new List<string>();
    public void AddItem(string item)
    {
        items.Add(item);
    }
    public IEnumerator<string> GetEnumerator()
    {
        return items.GetEnumerator();
    }
    IEnumerator IEnumerable.GetEnumerator()
    {
        return GetEnumerator();
    }
}
public class Program
{
    public static void Main()
    {
        MyClass myClass = new MyClass();
        myClass.AddItem("Apple");
        myClass.AddItem("Banana");
        myClass.AddItem("Orange");
        foreach (string item in myClass)
        {
            Console.WriteLine(item);
        }
    }
}
In the above example:
- The MyClassclass implements theIEnumerable<string>interface, specifying that it can be enumerated over a sequence of strings.
- The class has an internal list of strings (items) and aAddItemmethod to add items to the list.
- The GetEnumeratormethod is implemented to return an enumerator (iterator) for the internal list.
- The class also includes an explicit implementation of IEnumerable.GetEnumeratorto satisfy the non-genericIEnumerableinterface.
- In the Mainmethod, an instance ofMyClassis created, and items are added to it.
- The foreach loop iterates over the instance of MyClass, implicitly calling theGetEnumeratormethod and printing each item.
By implementing IEnumerable, you enable the ability to iterate over the elements of a collection using the foreach loop or LINQ operators. The interface defines a single method, GetEnumerator(), that returns an IEnumerator or IEnumerator<T>. This enumerator allows for iterating over the collection by retrieving each element one by one.
Using IEnumerable provides a standard way to work with collections and enables compatibility with LINQ query operations, making it easier to query, filter, and manipulate data in a collection.
