DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

既定のプロパティを宣言する

たとえばコレクションのような役割を果たすクラス「TestClass」があり、このクラスのインスタンス「myTest」があったとします。このとき、あたかも配列のように、「myTest(0)」(C#では「myTest[0]」)でその番号に登録されている値を取得できたり、設定できたりすると便利だと思いませんか?ここではそれを可能にする方法を紹介します。

VB.NETで「既定のプロパティ」を使用する方法

VB.NETの場合、下記のようにDefaultを付けて既定のプロパティを宣言することにより、可能です。

VB.NET
コードを隠すコードを選択
'クラスを宣言
Public Class SampleClass
    Dim myStrings() As String
    Public Sub New(ByVal capacity As Integer)
        'コンストラクタで配列を作成する
        myStrings = New String(capacity) {}
    End Sub

    '既定のプロパティを宣言する
    '既定のプロパティはパラメータ(下の例ではindex)を1つ持つ必要がある
    Default Public Property Item(ByVal index As Integer) As String
        Get
            Return myStrings(index)
        End Get
        Set(ByVal Value As String)
            myStrings(index) = Value
        End Set
    End Property
End Class

このクラスの使用例は、以下のようになります。

VB.NET
コードを隠すコードを選択
'インスタンスを作成
Dim myTest As New SampleClass(9)

'既定のプロパティを使って、Itemプロパティを設定
'もちろん「myTest.Item(3) = "さん"」でもよい
myTest(3) = "さん"

'既定のプロパティを使って、Itemプロパティを取得
'もちろん「Console.WriteLine(myTest.Item(3))」でもよい
Console.WriteLine(myTest(3))

C#で「インデクサ」を使用する方法

C#では、インデクサを用います。以下にその例を示します。

C#
コードを隠すコードを選択
//クラスを宣言
public class SampleClass
{
    string[] myStrings;
    public SampleClass(int capacity)
    {
        //コンストラクタで配列を作成する
        myStrings = new string[capacity];
    }

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

このクラスの使用例は、以下のようになります。

C#
コードを隠すコードを選択
//インスタンスを作成
SampleClass myTest = new SampleClass(9);

//インデクサを使って、値を設定
myTest[3] = "さん";
//インデクサを使って、値を取得
Console.WriteLine(myTest[3]);

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • .NET Tipsをご利用いただく際は、注意事項をお守りください。