본문 바로가기
Programming/C#

C# 인덱서(Indexer) 배열과 유사한 접근성 제공

by Dev_카페인 2024. 6. 9.
반응형

[C#] 인덱서(Indexer) : 배열과 유사한 접근성 제공

안녕하세요! 이번 포스트에서는 C#의 인덱서(Indexer)에 대해 알아보겠습니다. 인덱서는 클래스나 구조체에 배열과 유사한 접근성을 제공하여, 인스턴스의 특정 요소에 접근할 수 있는 메커니즘을 제공합니다.

인덱서(Indexer)란 무엇인가요?

인덱서는 클래스나 구조체에서 배열처럼 인덱스를 사용하여 멤버에 접근할 수 있도록 하는 메커니즘입니다. 일반적으로 배열에서 인덱스로 요소에 접근하는 것과 유사한 구문을 사용하여 인덱서를 호출할 수 있습니다.

인덱서의 기본 구조

public class MyClass
{
    private string[] data = new string[10];

    public string this[int index]
    {
        get => data[index];
        set => data[index] = value;
    }
}

위 예시에서 MyClass 클래스에는 인덱서가 정의되어 있습니다. 이 인덱서는 string 배열에 접근하는 기능을 제공합니다.

인덱서의 사용법

인덱서는 다양한 데이터 구조에서 유용하게 사용될 수 있습니다. 주로 컬렉션 클래스나 데이터 접근 객체에서 자주 활용됩니다.

컬렉션 클래스에서의 인덱서 사용

public class MyCollection<T>
{
    private T[] items = new T[10];

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

class Program
{
    static void Main(string[] args)
    {
        MyCollection<int> collection = new MyCollection<int>();

        collection[0] = 1;
        collection[1] = 2;

        Console.WriteLine(collection[0]); // 1
        Console.WriteLine(collection[1]); // 2
    }
}

위 예시에서 MyCollection<T> 클래스에는 제네릭으로 구현된 인덱서가 있습니다. 이를 통해 컬렉션에 있는 요소에 인덱스를 사용하여 접근할 수 있습니다.

데이터 접근 객체에서의 인덱서 사용

public class DataAccess
{
    private Dictionary<int, string> data = new Dictionary<int, string>();

    public string this[int key]
    {
        get => data[key];
        set => data[key] = value;
    }
}

class Program
{
    static void Main(string[] args)
    {
        DataAccess dataAccess = new DataAccess();

        dataAccess[1] = "Data 1";
        dataAccess[2] = "Data 2";

        Console.WriteLine(dataAccess[1]); // Data 1
        Console.WriteLine(dataAccess[2]); // Data 2
    }
}

위 예시에서 DataAccess 클래스에는 Dictionary<int, string>을 사용한 인덱서가 있습니다. 이를 통해 키를 사용하여 데이터에 접근할 수 있습니다.

인덱서의 주의사항

  • 인덱서의 인덱스는 일반적으로 배열처럼 정수형이어야 합니다.
  • 인덱서는 여러 개 정의할 수 있지만, 인덱스 매개변수의 개수와 타입은 서로 달라야 합니다.
  • 인덱서는 프로퍼티와 마찬가지로 get과 set 접근자를 가질 수 있습니다.

마치며

이번 포스트에서는 C#의 인덱서(Indexer)에 대해 알아보았습니다. 인덱서를 사용하면 배열과 유사한 방식으로 클래스나 구조체의 멤버에 접근할 수 있어, 데이터 구조를 더욱 유연하고 편리하게 다룰 수 있습니다. 추가적인 질문이나 궁금한 점이 있다면 언제든지 댓글로 남겨주세요!

반응형