본문 바로가기

C# 문법

[C#] Class에서 인덱서[T] 사용하기

인덱서[T]

  • 인덱서는 클래스나 구조체의 인스턴스를 배열처럼 인덱싱할 수 있습니다. 인덱싱 값은 형식이나 인스턴스 멤버를 명시적으로 지정하지 않고도 설정하거나 검색할 수 있습니다. 인덱서는 해당 접근자가 매개 변수를 사용한다는 점을 제외하면 속성과 유사합니다.
  • 인덱서는 내부 컬렉션 또는 배열을 캡슐화 하는데 주로 사용되는 형식
      Public int this[int index]

간단한 예제

    public void Run()
    {
        StringArray<string> strArr = new StringArray<string>();
        strArr[4] = "Yangbeng! Good Boy";
        Console.WriteLine(strArr[4]);
    }
    public class StringArray<T>
    {
        private T[] _arr = new T[10];

        public T this[int index]
        {
            get => _arr[index];
            set => _arr[index] = value;
        }
    }

결과

Yangbeng! Good Boy

심화

    public void Run()
    {
        StringArray strArr = new StringArray();
        Console.WriteLine(strArr["Hungry"]);
        Console.WriteLine(strArr["Oh~ho"]);
    }
    public class StringArray
    {
        private string[] _strArr = new string[] { "Yangbeng", "Oh~ho", "Yang Yaho" };

        public int Length => _strArr.Length;
        public bool this[string str] => ExistStr(str);

        private bool ExistStr(string str)
        {
            return _strArr.Any(f => f == str);
        }
    }

결과

False
True