インデクサは、プロパティを拡張したようなもので、オブジェクトのメンバに配列のような添字でアクセスできる・・・。
さらに、プロパティと同じく、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