This is asked very frequently in any .net framework interview
Things that should be noted-
Here is the documentation on Enumerator.
IEnumerator is used to go through list
IEnumerator has one object type property i.e Current which has getter only and two methods
MoveNext that returns boolean
Reset
Code sample
take the example above
Here you can see in the SecondLoopMethod the iteration started from where we left it in the first method
That's the benefit and control of using IEnumerator
Where if we try to this with IEnumerable then in the second method it again start looping from the beginning
Documetation for Enumerable.
We can loop throgh items of list using IEnumerator too
IEnumerable and IEnumerator are both interfaces in the .net framework
IEnumerable has just one method declaration i.e. GetEnumerator which return an enumerator
Every object which can be looped through using foreach, inherit from IEnumerable directly or indirectly
You cannot use foreach on classes which do not inherit from IEnumerable
If you have a model and want to loop through its array using foreach then you must that class must inherit from IEnumerable
Code sample
IEnumerable simplifies and shortens the original looping syntax compared to IEnumerator
Things that should be noted-
Here is the documentation on Enumerator.
IEnumerator is used to go through list
IEnumerator has one object type property i.e Current which has getter only and two methods
MoveNext that returns boolean
Reset
Code sample
IEnumerator enumerator = enumerable.GetEnumerator();
while (enumerator.MoveNext())
{
object element = enumerator.Current;
// Perform your logic logic on the element
}
Let's consider a scenario where you have to loop through a collection in two different methodstake the example above
List<int> enumerable = new List<int>();
for (int i = 0; i <= 20; i++)
{
enumerable.Add(i);
}
IEnumerator enumerator = enumerable.GetEnumerator();
Console.WriteLine("FirstLoopMethod start...");
while (enumerator.MoveNext())
{
object element = enumerator.Current;
int num = int(element);
Console.WriteLine(num);
if(num > 100)
{
SecondLoopMethod(enumerator);
}
// you logic here
// Perform your logic logic on the element
}
private void SecondLoopMethod(IEnumerator enumerator)
{
Console.WriteLine();
Console.WriteLine("SecondLoopMethod start...");
while (enumerator.MoveNext())
{
object element = enumerator.Current; int num = int(element);
Console.WriteLine(num);
// Perform your logic logic on the element
}
}
This is the output you getHere you can see in the SecondLoopMethod the iteration started from where we left it in the first method
That's the benefit and control of using IEnumerator
Where if we try to this with IEnumerable then in the second method it again start looping from the beginning
Documetation for Enumerable.
We can loop throgh items of list using IEnumerator too
IEnumerable and IEnumerator are both interfaces in the .net framework
IEnumerable has just one method declaration i.e. GetEnumerator which return an enumerator
Every object which can be looped through using foreach, inherit from IEnumerable directly or indirectly
You cannot use foreach on classes which do not inherit from IEnumerable
If you have a model and want to loop through its array using foreach then you must that class must inherit from IEnumerable
Code sample
When your code executes the above code becomesforeach(object item in enumerable) { // Perform logic on the item }
IEnumerator enumerator = enumerable.GetEnumerator();
while (enumerator.MoveNext())
{
object item = enumerator.Current;
// Perform logic on the item
}
Now what are the benefits and drawbacks of both IEnumerable simplifies and shortens the original looping syntax compared to IEnumerator
- IEnumerator provide better flexibility and control over your looping logic
This comment has been removed by the author.
ReplyDeleteCool example
ReplyDeletethanks.
DeletePlease feel free to ask any topic
I'll try my best write on it briefly