読者です 読者をやめる 読者になる 読者になる

インデクサ

インデクサは、プロパティを拡張したようなもので、オブジェクトのメンバに配列のような添字でアクセスできる・・・。
さらに、プロパティと同じく、getとsetでアクセス制限もできる・・・。
オブジェクトの中に、配列やリストのようなコレクションをメンバとしておいといて、それをオブジェクトの外からアクセスするようなときに使う・・・。

Class1.csを追加し、

Class1のコンストラクタで、配列の大きさsizeを引数に取る・・・。
そのsizeの分の配列intArrayを生成・・・。メンバにsizeをセットしておく・・・。

インデクサは、

<戻り値型> this[<添字型> <添字変数>]

で定義・・・。
上のgetでは、生成した配列の範囲外だったらエラーで-1を返し、範囲内ならintArray[index]の値を返す・・・。

下のsetでは、indexだけじゃなく、値が負の場合もエラー・・・。範囲内かつ値が0以上なら、値をintArray[index]に入れる・・・。

MainClass.csは、

Class1のオブジェクトc1を生成・・・。
コンストラクタに5を渡しているので、要素数5の配列が内部で生成されている・・・。

値の設定・・・。
添字が-3、添字が100、代入する値が-5の場合はエラー・・・。

c1のそれぞれの値を取得し、vに代入・・・。
添字が-2、15の場合はエラー・・・。
c1[4]は設定の時点でエラーなので値がセットされていない・・・。

c1とvの値を出力・・・。

invalid!(index < 0)
invalid!(index > size - 1)
invalid!(value < 0)
invalid!(index < 0)
invalid!(index > size - 1)
c1[0] = 1
c1[1] = 0
c1[2] = 8
c1[3] = 0
c1[4] = 0
v[0] = 1
v[1] = -1
v[2] = -1
v[3] = 8
v[4] = 0
続行するには何かキーを押してください . . .

設定でエラーが出ていないところはc1に0以外の値がセットされている・・・。
取得でエラーが出ている場合は-1がセットされている・・・。
v[4]はc1[4]の値がセットされずに取り出されたので0・・・。

Sample/cs/Indexer/Indexer/src/Indexer at master · bg1bgst333/Sample · GitHub