[C# 고급문법] #4 인덱서 (Indexer)

반응형
반응형

# 인덱서 (Indexer)

* 개인적인 공부 기록용으로 작성한 포스팅 이기에 잘못된 내용이 있을 수 있으며, 추가하거나 수정할 내용이 있다면 지속적으로 수정해 나갈 예정입니다.


# 인덱서 (Indexer)

인덱서(Indexer)인덱스(Index)를 이용해 객체 내부에 존재하는 데이터에 접근하도록 도와주며, 객체를 마치 배열처럼 사용할 수 있도록 해준다. 

객체 내부의 데이터에 접근할 수 있는 통로 역할을 한다는 점에서 프로퍼티(Property)와 매우 유사한데, 프로퍼티와 다른 점은 "인덱스(Index)"를 이용한다는 것이다. 인덱스의 선언 형식은 다음과 같다.

    class 클래스이름
    {
        한정자 인덱서형식 this[형식 index]
        {
            get { /* index를 이용해 내부 데이터 반환 */ }
            set { /* index를 이용해 내부 데이터 저장 */ }
        }
    }

아래는 인덱서를 활용한 예시인데, MyList 클래스 내부에 int형 array를 선언하여 인덱서를 이용해 array에 접근하는 코드이다.

    class MyList
    {
        private int[] array = new int[5];

        // Indexer
        public int this[int index]
        {
            get 
            { 
                return array[index]; 
            }

            set 
            { 
                if (index >= array.Length)
                {
                    Array.Resize<int>(ref array, index + 1);
                    Console.WriteLine($"Resize : {array.Length}");
                }
            }
        }
    }

    class My
    {
        static void Main(string[] args)
        {
            MyList list = new MyList();
            for (int i = 0; i < 5; i++)
                list[i] = i;
            for (int i = 0; i < list.Length; i++)
                Console.WriteLine(list[i]);
        }
    }

이처럼 인덱서를 이용하면 마치 배열을 다루듯 인덱스를 이용해 데이터에 접근할 수 있다.


반응형

댓글

Designed by JB FACTORY