인덱서를 활용하여 private 클래스에 접근하는 데 있어서,
Get~Set 함수를 구현하지 않고도, 값을 지정하고 바꿀 수 있도록 만들 수 있다.
인덱서는 클래스 또는 구조체에 대한 액세스 메서드이다.
인덱서는 속성과 유사하지만 인덱스와 값을 사용하여 값을 가져오거나 설정할 수 있다.
예를 들어, 인덱스를 사용하여 배열과 같은 객체에 액세스할 수 있다.
인덱서는 속성과 같은 방식으로 선언된다.
그러나 인덱서의 리턴 유형과 매개변수는 속성과 차이가 있다.
인덱서의 리턴 유형은 값을 가져올 때 반환할 값의 유형이고, 매개변수는 인덱스로 액세스할 때 사용할 값의 유형이다.
public class MyClass
{
public int this[int index]
{
get { return _data[index]; }
set { _data[index] = value; }
}
private int[] _data;
}
get~set 함수를 이용한, private 접근 방법이다
이를 인덱서를 활용하면 아래와 같이 바꿀 수 있다.
인덱스를 이용하여 구현한 리스트에 값을 맴버변수를 설정하거나 반환하는 방법은 위와 같다.
get, set맴버 클래스에 접근할 필요 없이 바로 해당 배열에 접근 가능하다.
해시테이블 역시도 마찬가지이다.
인덱서를 사용하면 간편하게 해시테이블에 키와 값을 저장하고 조회할 수 있다.
인터페이스를 활용한 인덱서 사용예시 (형태를 잡아주기만 함)
해당 인터페이스를 상속받은 클래스는 반드시, 인덱서를 이용한 get,set을 재정의해야 한다.
get - set를 재정의하여, 인덱서를 활용한 데이터 입출력을 구현한 것이다.
다음은 상속 후, 구현한 코드이다.
큰틀에 있어서 사용법은 다르지 않다.