インデクサの技術資料

本資料では、C#のインデクサの基本的な使い方とその活用方法について解説します。インデクサを使用することで、クラスや構造体を配列のようにインデックスでアクセスできるようにする機能を学びます。

インデクサとは

インデクサは、クラスや構造体に対して配列のようなインデックスアクセスを提供するメソッドの特殊な形式です。インデクサを使用することで、オブジェクトがまるで配列のように扱えるようになり、簡潔で直感的なアクセス方法を提供します。

インデクサの基本構文

インデクサは以下の構文で定義されます。

public class SampleClass
{
    private int[] numbers = new int[5];

    // インデクサの定義
    public int this[int index]
    {
        get
        {
            return numbers[index];
        }
        set
        {
            numbers[index] = value;
        }
    }
}

構文の説明

  • this[int index]: インデクサはthisキーワードと引数を使って定義します。indexはアクセスするためのインデックスを表します。
  • get: 指定されたインデックスの値を返します。
  • set: 指定されたインデックスの値を設定します。

インデクサの使用例

インデクサを使用して、オブジェクトを配列のように扱うことができます。

SampleClass sample = new SampleClass();

// 値の設定
sample[0] = 10;
sample[1] = 20;

// 値の取得
Console.WriteLine(sample[0]); // 10
Console.WriteLine(sample[1]); // 20

この例では、sample[0]sample[1]のようにインデクサを使って値を設定し、また取得しています。

複数のインデクサの定義

C#では、引数の型や数が異なる場合に複数のインデクサを定義することが可能です。以下に複数のインデクサを定義した例を示します。

public class SampleClass
{
    private int[] numbers = new int[5];
    private string[] names = new string[5];

    // int型のインデクサ
    public int this[int index]
    {
        get { return numbers[index]; }
        set { numbers[index] = value; }
    }

    // string型のインデクサ
    public string this[string index]
    {
        get { return names[Array.IndexOf(names, index)]; }
        set { names[Array.IndexOf(names, index)] = value; }
    }
}

この例では、int型とstring型の異なるインデクサが定義され、それぞれ異なるデータ型に対してインデックスアクセスが提供されています。

インデクサの特徴

  • インデクサはthisキーワードを使って定義されます。
  • インデクサは引数を持つため、複数の引数や異なる型の引数を定義できます。
  • getアクセサとsetアクセサを使用してデータを取得したり設定したりできます。

インデクサのメリット

  • 直感的なアクセス: 配列のようにオブジェクトにアクセスできるため、コードの可読性が向上します。
  • 柔軟なデータアクセス: インデクサを使用すると、クラス内のデータへのアクセスを抽象化し、クラスの使用を簡素化できます。

まとめ

C#のインデクサは、クラスや構造体に配列のようなアクセス方法を提供し、コードを簡潔かつ直感的にします。特に、カスタムコレクションやデータ構造を定義する場合、インデクサは強力なツールとなります。適切な使用により、コードの可読性とメンテナンス性を向上させることができます。

C#,インデクサ

Posted by hidepon