インデクサ
ユーザー定義型(構造体やクラス)のオブジェクトに対して、配列のような特定要素を取得・設定できる仕組みをインデクサと言います。VB.NETでは既定のプロパティとも言います。
インデクサはメソッドとプロパティの両方の性質を持ち合わせた機能です。
- getter/setterアクセサを設定する
- getter/setterアクセサのアクセス修飾子の設定や省略はプロパティと一緒
- インデクサ自体に名前をつけることはできない
- 添字の型は何でも良い
- 添字は2つ以上あっても良い
- オーバーロードできる
public class Test { private string[] msg = { "最初", "まんなか", "最後" }; public string this[int index] { get { return msg[index]; } set { msg[index] = value; } } public string this[int index1,int index2] { get { return msg[index1] + msg[index2]; } } } Test t = new Test(); Console.WriteLine(t[1]); Console.WriteLine(t[1,2]);
Public Class Test Private msg As String() = {"最初", "まんなか", "最後"} Default Public Property Item(ByVal index As Integer) As String Get Return msg(index) End Get Set(ByVal value As String) msg(index) = value End Set End Property Default Public Property Item(ByVal index1 As Integer, ByVal index2 As Integer) As String Get Return msg(index1) & msg(index2) End Get End Property End Class Dim t As New Test Console.WriteLine(t.Item(1)) Console.WriteLine(t.Item(1, 2))
最初 まんなか 最後
インデクサとよく似た機能で名前付きプロパティという機能があります。これはVB.NETの機能でC#には残念ながらありません。
sasaki816.hatenablog.com