[C#] 객체를 배열처럼 인덱싱하자! : 인덱서(Indexer)
2022. 3. 25. 00:04ㆍLanguages/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
반응형
'Languages > C#' 카테고리의 다른 글
[C#] 프로그램이 어떠한 상황에서도 잘 견딜 수 있도록! : 예외 처리(Exception Handling) (0) | 2022.03.26 |
---|---|
[C#] foreach 문 적용이 가능한 객체 만들기 : IEnumerable (0) | 2022.03.25 |
[C#] 레코드(Record) 형식으로 만드는 불변(Immutable) 객체 (1) | 2022.03.23 |
[C#] 인터페이스와 클래스의 사이 : 추상 클래스(Abstract Class) (0) | 2022.03.23 |
[C#] 객체지향의 꽃, 인터페이스(Interface) - 2편 (0) | 2022.03.22 |