순서
I. Indexer
II. Indexer Example
I.Indexer
Indexer는 클래스 내부의 컬렉션(배열 리스트)등 데이터에 접근할 때
멤버[index]로 접근하는 것이 아니라 클래스[index]로 접근하는 방식이다.
사용법이 배열과 비슷하지만 실제로 객체를 배열로 쓰지는 않는다.
Property와 같은 방식이지만 매개변수를 사용한다는 점이 다르다.
II. Indexer Example
public class Indexer {
public string[] myStrList = new string[3];
// indexer 구현 this가 사용된다.
public string this[int i] {
get => myStrList[i];
set => emps[i] = value;
}
}
// Generic Programming을 이용한 방법
public class GenericIndexer {
private T[] myGenArray = new T[10];
public T this[int i] {
get => myGenArray[i];
set => myGenArray[i] = value;
}
}
public class CMain() {
static void Main() {
Indexer normalIdxer = new Indexer();
GenericIndexer<int> GenIdxer = new GenericIndexer<int>();
// 일반적인 접근
normalIdxer.myStrList[1];
// Indexer를 이용한 접근
// class의 ref명을 그대로 배열로 사용한다.
// 그러면 this [int i] 부분이 호출된다.
string mystr = normalIdxer[1];
int myInt = GenIdxer[5];
}
}
Property와 구현이 똑같지만, 함수명이 변수명이 되는 Property와는 다르게
this 포인터가 Property 구현의 함수명처럼 사용된다.
Indexer를 사용하면 매개변수를 넣을 수 있는데 int 뿐 아니라 string으로도 첨자를 사용할 수 있다.
'Programming > .NET(C#,WPF)' 카테고리의 다른 글
[Programming][C#] 문법 12. Delegate (C++ 함수 포인터와 비슷함) (0) | 2023.01.13 |
---|---|
[Programming][C#] 문법 11. Attribute (디버깅을 위한 문법) (0) | 2023.01.13 |
[Programming][C#] 문법 9. Parameter(ref, out), Operator Overloading (0) | 2023.01.13 |
[Programming][C#] 문법 8. 한정자 (virtual, override, sealed, new) (0) | 2023.01.09 |