목록

C# Indexers Funtion

— 사용자 정의 클래스도 [] Index접근 할 수있나?

Dictionary가 포함된 클래스는 해당 Dictionary에 접근하려면 클래스를 통해 Get,Set함수를 만들어서 호출하거나 Public된 DIc에 접근해야 했다.

[Serializable]
public class Class1
{
    public Dictionary<string, int> m_dic;

    public int GetDic(string _key) 
    {
         return m_dic[_key] ;
    }
}

기존 컬렉션들 List, Dictionary, array처럼 우리가 정의한 클래스도 Index로 접근할 수 있을까??


— C#의 Indexers 기능 사용하기

다행히 만능 C#에는 해당 기능 지원해준다.

[Serializable]
public class Class1
{
    public Dictionary<string, int> m_dic;

    public int this(string _key) 
    {
         return m_dic[_key] ;
    }
}

요런식으로 this키워드를 사용해 바로 접근이 가능

Class1 _myClass1 = new Class1();
int _integer = _myClass1["키값"];

잘 활용하면 좀 더 직관적이고 깔끔하게 코드를 짤 수 있다

실제로 클래스네이밍만 명확하다면 외부접근할 때 유용할듯


참고.

https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/indexers/using-indexers