Indexer 를 쓰는 사람은 자주 사용하겠지만, 모르는 사람은 생소한 문법이기에 소개드립니다.

 

Indexer 란?

일반적으로 클래스의 속성(property) 을 이용해서 필드에 접근해서 가져오거나 설정해줍니다. 하지만 Indexer 는 클래스 내의 Collection 형태의 요소를 접근 할 수 있게끔 해줍니다.

Indexer 는 특별한 문법을 사용하기에 익숙해져야합니다. this[ ] 라는 문법을 사용하여, 클래스의 속성과 비슷하게 사용할 수 있습니다. 이때, 파라미터 값으로는 int 나 string 타입을 사용하여 Collection 형태의 요소에 접근할 수 있게 해줍니다.

 

Indexer 만들기

백마디 말보다, 하나의 예제가 더 쉽게 우리 머리속에 다가오기에 예제를 하나 만들었습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class MyCache {
    // 필드
    private Dictionary<stringstring> _Cache;
 
    // Indexer 속성
    public string this[string key] {
        get => _Cache.ContainsKey(key) ? _Cache[key] : null;
        set => _Cache[key] = value;
    }
 
    // 생성자
    public MyCache() {
        _Cache = new Dictionary<stringstring>();
        _Cache.Add("Debug""true");
        _Cache.Add("Logging""false");
    }
}
cs

 

코드는 간단합니다. Class를 만들고, 생성자에서 _Cache 라는 필드를 초기화 해줍니다.

그리고 6번째 라인에 있는 것이 Indexer 입니다. 해당 필드의 key값으로 정의된 것이 있으면 리턴해주고 없으면 null 값을 리턴해줍니다. 그리고 key 값을 가지고 설정을 해줍니다.

 

Indexer 호출하기

1
2
3
4
5
6
public MyCacheCall() {
    var cache = new MyCache();
 
    cache["Debug"= "false";
    var logging = cache["Logging"];
}
cs

 

MyCache 라는 클래스를 생성하고, 4번째는 set을 해주고 5번째에는 get을 해서 다른 변수에 넣어주는 역할을 하고 있습니다.

 

+ Recent posts