使用X轴上的字母和Y轴上的数字创建2D矩阵X [] []

时间:2017-12-24 18:45:04

标签: c# algorithm multidimensional-array

我正在尝试创建如下所示的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]

1 个答案:

答案 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