인덱서는 클래스에 [ ] 를 통해 어떠한 값을 설정하거나 가져오는 방법입니다.

 

프로퍼티처럼 get, set 설정을 해줘야 합니다.

 

public 리턴타입 this [타입 변수명]  으로 시작합니다. (int, string 모두 가능합니다!)

 

(복잡해질 수 있어 안쓰겠거니 했는데 많은 변수에 값을 할당할 때

 

일일히 값 체크를 하며 하드코딩 하는 형태가 되는데 사용해보니 조금 더 머리가 덜 아픈 느낌이 듭니다.)

 

 

using System;

namespace ConsoleApp2
{
    class A
    {
        public int a;
        public int b;
        public int c;

        public int this [int index] //인덱서 설정 indexer
        {
            get
            {
                switch (index)
                {
                    case 0:
                        return a;
                    case 1:
                        return b;
                    case 2:
                        return c;
                    default:
                        return 0;
                }
            }
            set
            {
                switch (index)
                {
                    case 0:
                        a = value;
                        break;
                    case 1:
                        b = value;
                        break;
                    case 2:
                        c = value;
                        break;
                    default:
                        break;
                }
            }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            A a = new A();
            int[] values = { 33, 28, 90 };

            for (int i = 0; i < 3; ++i)
            {
                a[i] = values[i]; //indexer set

                Console.WriteLine(a[i]); //indexer get
            }

            Console.WriteLine("a = {0}, a[0] = {1}", a.a, a[0]);
            Console.WriteLine("b = {0}, a[1] = {1}", a.b, a[1]);
            Console.WriteLine("c = {0}, a[2] = {1}", a.c, a[2]);
        }
    }
}

 

해당 변수를 인덱스화 시켜서 사용하는 방법! 결과입니다.

+ Recent posts