fs[6] вне границ
fs[7] вне границ
fs[8] вне границ
fs[9] вне границ
О 10 20 30 40 fs[5] вне границ
fs[6] вне границ
fs[7] вне границ
fs[8] вне границ
fs[9] вне границ
Индексатор препятствует нарушению границ массива. Внимательно проанализируем каждую часть кода индексатора. Он начинается со следующей строки.
public int this[int index] {
В этой строке кода объявляется индексатор, оперирующий элементами типаint.Ему передается индекс в качестве параметраindex.Кроме того, индексатор объявляется открытым(public),что дает возможность использовать этот индексатор в коде за пределами его класса.
Рассмотрим следующий код аксессораget.
get {
if (ok(index) ) {
ErrFlag = false; return a[index];
} else {
ErrFlag = true; return 0;
Аксессорgetпредотвращает ошибки нарушения границ массива, проверяя в первую очередь, находится
А теперь рассмотрим следующий код аксессора set, предотвращающего ошибки нарушения границ массива.
set {
if(ok(index) ) {
a[index] = value;
ErrFlag = false;
}
else ErrFlag = true;
}
Если параметрindexметодаok находится в установленных пределах, то соответствующему элементу массива присваивается значение, передаваемое из параметраvalue.В противном случае устанавливается логическое значениеtrueпеременнойErrFlag.Напомним, чтоvalueв любом аксессорном методе является неявным параметром, содержащим присваиваемое значение. Его не нужно (да и нельзя) объявлять отдельно.
Наличие обоих аксессоров, get и set, в индексаторе не является обязательным. Так, можно создать индексатор только для чтения, реализовав в нем один лишь аксессор get, или же индексатор только для записи с единственным аксессором set.
Перегрузка индексаторов