본문 바로가기
개발일지/C#

C# Indexer

by 태운콩즙 2024. 10. 2.
728x90
반응형

정의

C# Indexer는 특별한 문법인 this[] 를 써서 클래스 속성(Property) 처럼 get ,set 을 정의 한다

클래스 내부의 어떤 데이터를 리턴 하는지는 클래스 디자인시 필요에 따라 정하게 될것이고 리턴 데이터 타입도 여러가지로 지정할수 있다

입력 파라미터인 인덱스도 여러 데이터 타입을 쓸 수 있는데 주로 int나 string 타입을 사용하여 인덱스 값을 주는 것이 일반적이다

예제)

int 인덱스를 받아 배열의 데이터를 찾아 정수를 리턴

namespace ConsoleApp2
{
   
        class MyClass
        {
            private const int MAX = 10;
            private string name;

            // 내부 정수 배열 데이터
            private int[] data = new int[MAX];

            // 인덱스 정의. int 파라미터 사용
            public int this[int index]
            {
                get
                {
                    if (index < 0 || index >= MAX)
                    {
                        throw new IndexOutOfRangeException();
                    }
                    else
                    {
                        // 정수 배열로 부터 값 리턴
                        return data[index];
                    }
                }
                set
                {
                    if (!(index < 0 || index >= MAX))
                    {
                        // 정수 배열에 값 저장
                        data[index] = value;
                    }
                }
            }
        }
    class Program 
    {
        static void Main(string[] args)
        {
            MyClass cls = new MyClass();

            // 인덱서 set 사용
            cls[1] = 1024;

            // 인덱서 get 사용

            int i = cls[1];
        }
    }
}
    

728x90
반응형

'개발일지 > C#' 카테고리의 다른 글

회계 관리 프로그램 예제  (1) 2024.11.09
인사 급여 관리 프로그램 예제  (0) 2024.11.08
C# Delegate  (2) 2024.10.02
yield  (5) 2024.10.01
C#) ref  (0) 2024.10.01