We were using a number of collections holding same type of data. Someone asked me if there is a way to handle these collections in a common way. In other words how do we iterate through different kinds of collection using a common function .I told them we could achieve the same using a function with IEnumerable<T> . I demonstrated the same using 3 collections Generic Stack, Queue, and Ordered List.
Following is the code snippet that demonstrates the same
using System;
using System.Collections.Generic;
using System.Collections;
namespace testCollection
{
class Program
{
static void Main(string[] args)
{
//Stack of integers
Stack<int> stackCollection = new Stack<int>();
stackCollection.Push(1);
stackCollection.Push(2);
stackCollection.Push(3);
stackCollection.Push(4);
stackCollection.Push(5);
//Queue of Integers
Queue<int> queueCollection = new Queue<int>();
queueCollection.Enqueue(1);
queueCollection.Enqueue(2);
queueCollection.Enqueue(3);
queueCollection.Enqueue(4);
queueCollection.Enqueue(5);
//ordered list of integers
List<int> listCollection = new List<int>();
listCollection.Add(1);
listCollection.Add(2);
listCollection.Add(3);
listCollection.Add(4);
listCollection.Add(5);
//iterates through the stack of items in last in first out manner
GetItems(stackCollection);
//iterates through the queue in a fist in first out manner
GetItems(queueCollection);
//Iterates through an ordered list of integers
GetItems(listCollection);
Console.ReadLine();
}
/// <summary>
/// generic iteration logic for a collection
/// </summary >
/// <param name="collection"> is decided at runtime and instance of a class implementing ienumerable</param>
public static void GetItems(IEnumerable<int> collection)
{
//gets the enumerator
IEnumerator<int> enumerator = collection.GetEnumerator();
while (enumerator.MoveNext ())
{
//gets the items from the collection
Console.WriteLine(enumerator.Current);
}
}
}
}
No comments:
Post a Comment