In this tutorial, we will learn how to implement an IEnumerable interface in a C# class. If we implement the IEnumarable interface in our class then we can loop through all class objects using a foreach loop.
Let's understand a very small example of the IEnumerable interface. In this example, we will store a set of integer variables using IEnumerable.
The following is a simple example
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Collections;
namespace TestDomain
{
class Program
{
public static void Main(String[] args)
{
IEnumerable<int> Values = from value in Enumerable.Range(1, 10) select value;
foreach (int a in Values)
{
Console.WriteLine(a);
}
Console.ReadLine();
}
}
}
Here is a sample output
Let's see another example.
Let's implement another example of IEnumerable. In this example, we will search a list using a LINQ query and we will go through all values using a for each loop. Let's have a look at the following code.
using System;
using System.Text;
using System.Collections;
namespace TestDomain
{
class Program
{
public static void Main(String[] args)
{
List<string> List = new List<string>();
List.Add("Sourav");
List.Add("Ram");
List.Add("shyam");
List.Add("Sachin");
IEnumerable names = from n in List where (n.StartsWith("S")) select n;
foreach (string name in names)
{
Console.WriteLine(name);
}
Console.ReadLine();
}
}
}
This is the output
Implement IEnumerable in the C# class
In this example, we will implement an IEnumerable interface in our C# class. If we implement the IEnumerable interface then we can loop through all the objects of it. Have a look at the following code.
using System;
using System.Diagnostics;
using System.Reflection;
using System.Collections;
namespace TestDomain
{
class Test : IEnumerable
{
Test[] Items = null;
int freeIndex = 0;
public String Name { get; set; }
public string Surname { get; set; }
public Test()
{
Items = new Test[10];
}
public void Add(Test item)
{
Items[freeIndex] = item;
freeIndex++;
}
// IEnumerable Member
public IEnumerator GetEnumerator()
{
foreach (object o in Items)
{
if(o == null)
{
break;
}
yield return o;
}
}
}
class Program
{
public static void Main(String[] args)
{
Test t1 = new Test();
t1.Name = "Sourav";
t1.Surname = "Kayal";
Test t2 = new Test();
t2.Name = "Ram";
t2.Surname = "Das";
Test myList = new Test();
myList.Add(t1);
myList.Add(t2);
foreach (Test obj in myList)
{
Console.WriteLine("Name:- " + obj.Name + "Surname :- " + obj.Surname);
}
Console.ReadLine();
}
}
}
Here is the output
We can see that in the Test class, we implemented the IEnumerable interface. Within the constructor, we are creating a few objects of the Test class and adding a method to add the objects of the Test class one by one. The GetEnumerator method will return an object of the Test class one by one because we are using yield.
Conclusion
In this quick article, we have tried to learn how to implement the IEnumerable interface in our C# class. Hope you have understood the concepts.