} else {
ErrFlag = true; return 0;
}
}
// Это аксессор set. set {
if(ok(indexl, index2)) {
a[indexl, index2] = value;
ErrFlag = false;
}
else ErrFlag = true;
}
}
// Возвратить логическое значение true, если // индексы находятся в установленных пределах, private bool ok(int indexl, int index2) {
•if (indexl >= 0 & indexl < rows & index2 >= 0 & index2 < cols) return true;
return false;
}
}
// Продемонстрировать применение двумерного индексатора, class TwoDIndexerDemo { static void Main() {
FailSoftArray2D fs = new FailSoftArray2D(3, 5); int x;
// Выявить скрытые сбои.
Console.WriteLine('Скрытый сбой.'); for (int i=0; i < 6; i++) fs[i, i]=i*10;
for(int i=0; i < 6; i++) {
x = f s [ i, i ] ;
if(x != -1) Console.Write (x + ' ');
}
Console.WriteLine ();
// А теперь показать сбои.
Console.WriteLine('пСбой с уведомлением об ошибках.'); for(int i=0; i < 6; i++) {
fs[i,i] = i *10; if(fs.ErrFlag)
Console.WriteLine('fs[' + i + ', ' + i + '] вне границ
}
for(int i=0; i < 6; i++) {
x = f s [ i, i ] ;
if(!fs.ErrFlag) Console.Write(x + ' ');
else
Console.WriteLine('fs[' + i + ', ' + i + '] вне границ');
}
}
}
Вот к какому результату приводит выполнение этого кода:
Скрытый сбой.
0 10 20 0 0 0
Сбой с уведомлением об ошибках.
fs[3, 3] вне границ
fs[4, 4] вне границ
fs[5, 5] вне границ
0 10 20 fs[3, 3] вне границ
fs[4, 4] вне границ
