[C#] 인덱서(Indexer)

Running boy·2023년 8월 6일
0

컴퓨터 공학

목록 보기
18/36

인덱서(Indexer)

배열처럼 []를 통해 클래스의 요소에 접근할 수 있도록 제공되는 구문이다.

[접근 제한자] [반환 타입] this[[인덱스 타입] [인덱스 식별자]]
{
    [접근 제한자] get
    {
        // [코드]
    }

    [접근 제한자] set
    {
        // [코드]
    }
}

식별자 대신 this 키워드를 사용한다는 점, 인덱스 타입과 인덱스 식별자를 지정한다는 점을 제외하면 프로퍼티와 사용법이 같다.

마찬가지로 set을 생략하여 읽기 전용으로 만들 수도 있다.

class Program
{
    class TestIndexer
    {
        int[] readonlyArray;

        public TestIndexer(int[] arr)
        {
            readonlyArray = arr;
        }

        public int this[int index]
        {
            get { return readonlyArray[index]; }
        }

        public override string ToString()
        {
            return string.Join(" ", readonlyArray);
        }
    }

    static void Main(string[] args)
    {
        TestIndexer testIndexer = new TestIndexer(new int[] { 1, 2, 3 });

        Console.WriteLine(testIndexer.ToString());

        Console.WriteLine(testIndexer[0]);
        Console.WriteLine(testIndexer[1]);
        Console.WriteLine(testIndexer[2]);
    }
}

// 출력:
// 1 2 3
// 1
// 2
// 3

간편하지만 직관적이지 않고 메서드로 대체가 가능하기 때문에 일반적으로 잘 쓰이진 않는다.


참고 자료
시작하세요! C# 10 프로그래밍 - 정성태

profile
Runner's high를 목표로

0개의 댓글