첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
유용한 소스 코드가 있으면 icodebroker@naver.com으로 보내주시면 감사합니다.
블로그 자료는 자유롭게 사용하세요.

728x90
반응형

■ IEnumerable 인터페이스 사용하기 예제

------------------------------------------------------------------------------------------------------------------------

Employee[] employeeArray = new Employee[3]

{

    new Employee("John", "Smith"  ),

    new Employee("Jim" , "Johnson"),

    new Employee("Sue" , "Rabon"  )

};

 

EmployeeEnumerable employeeEnumerable = new EmployeeEnumerable(employeeArray);

 

foreach(Employee employee in employeeEnumerable)

{

    Console.WriteLine(employee.FirstName + " " + employee.LastName);

}

------------------------------------------------------------------------------------------------------------------------

 

■ IEnumerable 인터페이스 사용하기

------------------------------------------------------------------------------------------------------------------------

Employee.cs

 

 

/// <summary>

/// 직원

/// </summary>

public class Employee

{

    //////////////////////////////////////////////////////////////////////////////////////////////////// Property

    ////////////////////////////////////////////////////////////////////////////////////////// Public

 

    #region 이름 - FirstName

 

    /// <summary>

    /// 이름

    /// </summary>

    public string FirstName { get; set; }

 

    #endregion

 

    #region 성 - LastName

 

    /// <summary>

    ///

    /// </summary>

    public string LastName { get; set; }

 

    #endregion

 

    //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor

    ////////////////////////////////////////////////////////////////////////////////////////// Public

 

    #region 생성자 - Employee(firstName, lastName)

 

    /// <summary>

    /// 생성자

    /// </summary>

    /// <param name="firstName">이름</param>

    /// <param name="lastName"></param>

    public Employee(string firstName, string lastName)

    {

        FirstName = firstName;

        LastName  = lastName;

    }

 

    #endregion

}

 

 

EmployeeEnumerator.cs

 

 

using System;

using System.Collections;

 

/// <summary>

/// 직원 열거자

/// </summary>

public class EmployeeEnumerator : IEnumerator

{

    //////////////////////////////////////////////////////////////////////////////////////////////////// Field

    ////////////////////////////////////////////////////////////////////////////////////////// Private

 

    #region Field

 

    /// <summary>

    /// 직원 배열

    /// </summary>

    private  Employee[] employeeArray;

 

    /// <summary>

    /// 현재 위치

    /// </summary>

    private int currentPosition = -1;

 

    #endregion

 

    //////////////////////////////////////////////////////////////////////////////////////////////////// Property

    ////////////////////////////////////////////////////////////////////////////////////////// Public

 

    #region 직원 배열 - EmployeeArray

 

    /// <summary>

    /// 직원 배열

    /// </summary>

    public Employee[] EmployeeArray

    {

        get

        {

            return this.employeeArray;

        }

        set

        {

            this.employeeArray = value;

        }

    }

 

    #endregion

 

    #region 현재 항목 - IEnumerator.Current

 

    /// <summary>

    /// 현재 항목

    /// </summary>

    object IEnumerator.Current

    {

        get

        {

            return Current;

        }

    }

 

    #endregion

 

    #region 현재 항목 - Current

 

    /// <summary>

    /// 현재 항목

    /// </summary>

    public Employee Current

    {

        get

        {

            try

            {

                return this.employeeArray[this.currentPosition];

            }

            catch(IndexOutOfRangeException)

            {

                throw new InvalidOperationException();

            }

        }

    }

 

    #endregion

 

    //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor

    ////////////////////////////////////////////////////////////////////////////////////////// Public

 

    #region 생성자 - EmployeeEnumerator(employeeArray)

 

    /// <summary>

    /// 생성자

    /// </summary>

    /// <param name="employeeArray">직원 배열</param>

    public EmployeeEnumerator(Employee[] employeeArray)

    {

        this.employeeArray = employeeArray;

    }

 

    #endregion

 

    //////////////////////////////////////////////////////////////////////////////////////////////////// Method

    ////////////////////////////////////////////////////////////////////////////////////////// Public

 

    #region 다음 요소로 이동하기 - MoveNext()

 

    /// <summary>

    /// 다음 요소로 이동하기

    /// </summary>

    /// <returns>현재 위치가 마지막 요소 뒤 위치 여부</returns>

    public bool MoveNext()

    {

        this.currentPosition++;

 

        return (this.currentPosition < this.employeeArray.Length);

    }

 

    #endregion

        

    #region 위치 처음 요소 앞으로 이동하기 - Reset()

 

    /// <summary>

    /// 위치 처음 요소 앞으로 이동하기

    /// </summary>

    public void Reset()

    {

        this.currentPosition = -1;

    }

 

    #endregion

}

 

 

EmployeeEnumerable.cs

 

 

using System;

using System.Collections;

 

/// <summary>

/// 직원 열거가능

/// </summary>

public class EmployeeEnumerable : IEnumerable

{

    //////////////////////////////////////////////////////////////////////////////////////////////////// Field

    ////////////////////////////////////////////////////////////////////////////////////////// Private

 

    #region Field

 

    /// <summary>

    /// 직원 배열

    /// </summary>

    private Employee[] employeeArray;

 

    #endregion

 

    //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor

    ////////////////////////////////////////////////////////////////////////////////////////// Public

 

    #region 생성자 - EmployeeEnumerable(employeeArray)

 

    /// <summary>

    /// 생성자

    /// </summary>

    /// <param name="employeeArray">직원 배열</param>

    public EmployeeEnumerable(Employee[] employeeArray)

    {

        this.employeeArray = new Employee[employeeArray.Length];

 

        for(int i = 0; i < employeeArray.Length; i++)

        {

            this.employeeArray[i] = employeeArray[i];

        }

    }

 

    #endregion

 

    //////////////////////////////////////////////////////////////////////////////////////////////////// Method

    ////////////////////////////////////////////////////////////////////////////////////////// Public

 

    #region 열거자 구하기 - IEnumerable.GetEnumerator()

 

    /// <summary>

    /// 열거자 구하기

    /// </summary>

    /// <returns>열거자</returns>

    IEnumerator IEnumerable.GetEnumerator()

    {

        return (IEnumerator)GetEnumerator();

    }

 

    #endregion

 

    #region 열거자 구하기 - GetEnumerator()

 

    /// <summary>

    /// 열거자 구하기

    /// </summary>

    /// <returns>직원 열거자</returns>

    public EmployeeEnumerator GetEnumerator()

    {

        return new EmployeeEnumerator(this.employeeArray);

    }

 

    #endregion

}

 

------------------------------------------------------------------------------------------------------------------------

728x90
반응형
Posted by 사용자 icodebroker

댓글을 달아 주세요