我正在尝试创建如下所示的2D矩阵。 我无法找到办法,请帮帮我。
伪代码非常有用。
正常x [3] [5] 2D矩阵:
[00][01][02][03][04]
[10][11][12][13][14]
[20][21][22][23][24]
我想要创建的是x [C] [5]
[A0][A1][A2][A3][A4]
[B0][B1][B2][B3][B4]
[C0][C1][C2][C3][C4]
答案 0 :(得分:1)
这不是你想要的语法,但我认为它会满足你的需求。为了获得您想要的行为,您需要创建一个存储2D矩阵的类,并重载[]
运算符以接受char
而不是int
public class Matrix<T> {
private T[,] arr;
public Matrix(int x, int y) {
arr = new T[x, y];
}
public T this[char c, int i] {
get { return arr[c - 'A', i]; }
set { arr[c - 'A', i] = value; }
}
}
如您所见,代码实际上非常简单。它利用了char
数据类型保存其字母的ASCII值这一事实。通过减去'A',我们可以使用'A'作为0,'B'作为1,等等。然后你可以使用如下字符调用你的矩阵:
Matrix<int> m = new Matrix<int>(3,4); // Creates a 3 x 4 matrix of ints
m['B',3] = 4; // m[1,3] = 4
修改强>
如果您愿意,还可以修改构造函数以接受char
public Matrix(char x, int y) {
arr = new T[x - 'A' + 1, y];
}
请注意,用于初始化的字符(如数组的整数初始值设定项)是条目的 number ,因此大于最高索引。
Matrix<int> m = new Matrix<int>('C',4); // Creates a 3 x 4 matrix of ints
m['B',3] = 4; // m[1,3] = 4