[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