인덱서 Indexer

치즈오믈렛·2022년 7월 18일
0

Indexer

클래스의 내부의 데이터를 배열처럼 사용가능

class 클래스명
{
    제한자 출력자료형 this[자료형 인덱스]
    {
        get
        {
            return this.;
        }
        set
        {
            this[index] = value;
        }
    }
}

예제

Student 클래스 내부의 studentNum을 인덱서로 참조

class Student
{
    private int[] studentNum;

    public Student()
    {
        studentNum = new int[5];
    }

    public int this[int index]
    {
        get
        {
        	if(index >= 0 && index < studentNum.Length) 	//범위내에 있으면 값 리턴
            	return this.studentNum[index];
        }
        set
        {

            if (index >= 0 && index < studentNum.Length)	//범위내에 있으면 값 대입
                this.studentNum[index] = value;
            else
                Console.WriteLine("Out of range");	 //범위를 벗어나면 오류 출력
        }
    }
    public override string ToString()		//값 출력을 위해 ToString 오버라이딩
	{
		return string.Join(',',studentNum);
	}
}

class Program
{
    static void Main(string[] args)
    {
        Student student = new Student();

        student[0] = 1;		//인덱서를 사용해서 클래스 내부의 studentNum 에 값 대입
        student[1] = 2;
        student[2] = 3;
        Console.WriteLine(student.ToString());
    }
}

출력 : 1,2,3,0,0

profile
정리노트

0개의 댓글