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

■ IEnumerator 인터페이스 사용하기

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

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

}

 

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

Posted by 사용자 icodebroker
TAG

댓글을 달아 주세요