더북(TheBook)

배열 형식의 필드를 사용하는 인덱서

요일 정보를 담아 놓을 수 있는 형태의 개체를 만들어 보겠습니다.

> public class Week                    //요일 이름을 저장해 놓는 클래스
. {
.     //① 필드: 요일 문자열을 담아 놓을 수 있는 문자열 배열
.     private string[] _week;
.     public Week()                    //②-1 생성자: 매개변수가 없는 생성자
.     {
.         Length = 7;                  //기본값 초기화
.         _week = new string[Length];  //요소 7개를 갖는 배열 생성
.     }
.
.     public Week(int length)          //②-2 생성자: 매개변수가 있는 생성자
.     {
.         Length = length;
.         _week = new string[Length];
.     }
.
.     public int Length { get; }       //③ 속성
.
.     //④ 인덱서: 개체를 배열 형태로 사용하도록 this[] 형태의 인덱서 생성
.     public string this[int index]
.     {
.         get { return _week[index]; }
.         set { _week[index] = value; }
.     }
. }
>
> Week week = new Week(3);              //ⓐ 배열 형식 생성
> week[0] = "일요일";                   //ⓑ 인덱서로 문자열 값을 초기화
> week[1] = "월요일";
> week[2] = "화요일";
> for (int i = 0; i < week.Length; i++) //ⓒ 출력: 인덱서로 배열 형식의 필드 값 출력
. {
.     Console.WriteLine($"{week[i]}");
. }
일요일
월요일
화요일

처럼 public string this[int index] 형태로 정수 형식의 매개변수를 받고 그에 해당하는 문자열 값을 반환해 주는 인덱서를 생성할 수 있습니다. 이렇게 생성된 인덱서는 에서 값을 대입하면 인덱서의 setter를 실행하고, 에서 출력할 때 사용하면 인덱서의 getter를 실행합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.