[C#] 객체를 배열처럼 인덱싱하자! : 인덱서(Indexer)

2022. 3. 25. 00:04Languages/C#

 

 

 

 

 

인덱서 (Indexer)

객체 내의 데이터를 인덱스를 통해 접근하게 해주는 일종의 프로퍼티라고 생각하면 된다.

객체를 마치 배열처럼 사용할 수 있는 것이 특징이다. 인덱서는 다음과 같이 선언한다.

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

 

인덱서는 별다른 식별자를 가지지 않는다.

필요한 것은 오로지 인덱스 뿐이며 이것을 통해 객체 내의 데이터에 접근할 수 있게 해준다.

 

 

인덱서 사용 예제

class ItemList
{
    private int[] itemList;
    
    public ItemList()
    {
        itemList = new int[10];
    }
    
    public int this[int index]     // 인덱서
    {
        get
        {
            return itemList[index];
        }
        
        set
        {
            if (index >= itemList.Length)
            {
                Array.Resize<int>(ref itemList, index + 1);
                Console.WriteLine("Array Resized : {0}", itemList.Length);
            }
            
            itemList[index] = value;
        }
    }
}

 

위와 같이 선언을 했다면, 이제 ItemList 객체를 인덱싱하여 내부에 있는 itemList 배열에 접근할 수 있게 된다.

사용하는 예시를 보자.

ItemList list = new ItemList();

for(int i = 0; i < 10; i++)
{
    list[i] = i;
}

for (int i = 0; i < 10; i++)
{
    Console.WriteLine(list[i]);
}

 

 

 

 

 

 

  • 이 글은 <이것이 C#이다> 책을 바탕으로 공부한 글입니다.
728x90
반응형