IEnumerator interface supports a simple iteration over a nongeneric collection. : IEnumerable « Collections Data Structure « C# / C Sharp






IEnumerator interface supports a simple iteration over a nongeneric collection.

   

using System;
using System.Collections;

public class Employee
{
    public Employee(string fName, string lName)
    {
        this.firstName = fName;
        this.lastName = lName;
    }

    public string firstName;
    public string lastName;
}

public class EmployeeCollection : IEnumerable
{
    private Employee[] _people;
    public EmployeeCollection(Employee[] pArray)
    {
        _people = new Employee[pArray.Length];

        for (int i = 0; i < pArray.Length; i++)
        {
            _people[i] = pArray[i];
        }
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
       return (IEnumerator) GetEnumerator();
    }

    public EmployeeCollectionEnum GetEnumerator()
    {
        return new EmployeeCollectionEnum(_people);
    }
}

public class EmployeeCollectionEnum : IEnumerator
{
    public Employee[] _people;

    int position = -1;

    public EmployeeCollectionEnum(Employee[] list)
    {
        _people = list;
    }

    public bool MoveNext()
    {
        position++;
        return (position < _people.Length);
    }

    public void Reset()
    {
        position = -1;
    }

    object IEnumerator.Current
    {
        get
        {
            return Current;
        }
    }

    public Employee Current
    {
        get
        {
            try
            {
                return _people[position];
            }
            catch (IndexOutOfRangeException)
            {
                throw new InvalidOperationException();
            }
        }
    }
}

class App
{
    static void Main()
    {
        Employee[] peopleArray = new Employee[3]
        {
            new Employee("A", "D"),
            new Employee("B", "E"),
            new Employee("C", "F"),
        };

        EmployeeCollection peopleList = new EmployeeCollection(peopleArray);
        foreach (Employee p in peopleList)
            Console.WriteLine(p.firstName + " " + p.lastName);

    }
}

   
    
    
  








Related examples in the same category

1.Determines whether the specified collection is null or empty.
2.Determines whether the collection contains the specified element
3.Determines whether the collection contains all the elements in the specified collection.
4.Aggregate IEnumerable
5.Convert IEnumerable To DataTable
6.Convert IEnumerable by Func
7.Split IEnumerable
8.Shuffle IEnumerable
9.For each IEnumerable
10.Sleep before yield each element in IEnumerable
11.Add WhereIf to IEnumerable
12.Add OrderBy to IEnumerable
13.Add Repeat extension to IEnumerable
14.Yield element in IEnumerable until Predicate
15.IEnumerable extension for get second and third element
16.Simple function to determine if an item is an IEnumerable
17.Object class extension for IEnumerable, IComparable and where
18.Output DataTable and IEnumerable to console
19.Convert IEnumerable to String
20.Convert XmlNodeList to IEnumerable
21.Returns the first element contained in both, source and candidates.
22.Given a range (start,end) and a number of steps, will yield that a number for each step
23.Compares two sequences.
24.Empty Enumerable/Enumerator
25.CharEnumerator supports iterating over a String and reading its individual characters.
26.IEnumerable interface exposes the enumerator, which supports a simple iteration over a non-generic collection.
27.Convert IEnumerable to ObservableCollection
28.IEnumerable To Comma String
29.Do all for IEnumerable and Action
30.Convert IEnumerable to IEnumerable
31.Filter IEnumerable with Predicate
32.Join IEnumerable
33.Mode value for IEnumerable
34.Build Statistics function on to IEnumerable
35.Compare two IEnumerable
36.Convert IEnumerable to HashSet
37.Concatenate IEnumerable to String
38.Singleton IEnumerable
39.Convert IEnumerable To ReadOnlyCollection
40.Performs the specified action on each element of the IEnumerable
41.Creates a list by applying a delegate to pairs of items in the IEnumerable
42.Returns true if there are enough items in the IEnumerable
43.Returns true if there are no more than a set number of items in the IEnumerable
44.Groups items into same size lots.