f S [ 1 ]: 1
fs [2]: 2 fs[1 -1 ]: 1 f s [ 1. 6 ]: 2
, double . , 1.1 1, 1.6 2.
, . , , , - .
, . , . , , 2 0 15. , . .
// .
Using System;
class PwrOfTwo {
/* , 2 0 15. */ public int this[int index] {
// 2. get {
if((index >= 0) && (index < 16)) return pwr(index);
Else return -1;
}
// set .
}
int pwr(int p) { int result = 1;
for(int i=0; i < p; i++) result *= 2;
Return result;
}
}
class UsePwrOfTwo { static void Main() {
PwrOfTwo pwr = new PwrOfTwo();
Console.Write(" 8 2: "); for(int i=0; i < 8; i++)
Console.Write(pwr[i] + " ");
Console.WriteLine();
Console.Write(" : ");
Console.Write(pwr[-1] + " " + pwr[17]);
.
8 2: 1 2 4 8 16 32 64 128 : -1 -1
, PwrOf Two get, set. , . , PwrOf Two , . , .
pwr[0] =11; //
, set.
. -, , , ref out, . -, static.
|
|
. . .
// .
Using System;
class FailSoftArray2D {
int[,] a; // int rows, cols; //
public int Length; // public bool ErrFlag; //
// , public FailSoftArray2D(int , int ) { rows = ; cols = ;
= new int[rows, cols];
Length = rows * cols;
}
// FailSoftArray2D. public int this[int indexl, int index2] {
// get. get {
if(ok(indexl, index2)) {
ErrFlag = false;
return a[indexl, index2];
} 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