본문 바로가기

취미로 하는 게임코딩_gameCodingAsHobby/유니티unity로 게임 만들기

유니티27_C#17_인덱서(Indexer)

인덱서(Indexer)

 

인덱서의 특징은 다음과 같다.

 

  • 배열(array)의 특징을 가진 프라퍼티(property)의 일종이다.
  • 프라퍼티 처럼 클래스(class), 구조체(struct), 인터페이스(interface)의 멤버에 접근할 수 있게 한다.
  • 프라퍼티가 필드에 접근한다면, Indexer는 색인(index 인덱스)를 이용해서 배열에 접근한다.
  • 클래스 외부에서는 인스턴스(객체)를 배열처럼 사용할 수 있다.

 

Indexer를 정의하는 형식은 다음과 같다.

 

Indexer는 this 키워드와 배열(array) 선언할 때 붙이는 대괄호[ ] 를 사용하여 선언한다.

접근자 get , set 사용은 프라퍼티와 같고 int타입의 매개변수(index)를 통해서 접근한다는 것이 다르다.

 

Indexer를 사용한 예를 만들어본다.

 

 

IndexerExample 스크립트 파일을 만든다.

 

18번줄에 Hero라는 클래스를 만든다.

20번줄에 names라는 이름으로 string(문자열)타입의 배열을 정의하고 요소값을 4개 넣었다.

만약 이 상태에서 배열에 접근해서 첫번째 요소인 SuperMan을 ZolaMan으로 바꾸려면 7~9번줄 처럼 인스턴스(객체)를 만들어서 접근해야 한다.

11번줄에 반복문을 사용해서 배열을 출력하면 다음과 같다.

 

배열에 접근하기 위한 Indexer를 정의해서 구현하면 다음과 같다.

 

22~27번줄에 배열에 대한 Indexer를 정의한다.

9번줄, 13번줄 처럼 만든 test 인스턴스(객체)에 바로 index(인덱스)를 사용하여 배열에 접근할 수 있다. 

 

또 다른 예는 다음과 같다.

 

25번줄에서 int 타입의 요소가 4개인 배열 ages를 private으로 선언하고

27번줄부터 indexer를 정의했다.

 

7번줄에서 Hero타입의 인스턴스(객체) test를 만든다.

9번줄 부터 각 요소에 매개변수 index로 접근해서 새 값(value)을 저장한 후 출력하면 다음과 같은 결과가 나온다.

 

 

끝.

Wraven...