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

问题描述 投票:-2回答:1

我正在尝试创建如下所示的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]
c# algorithm multidimensional-array
1个回答
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];
}

请注意,用于初始化的字符(如数组的整数初始值设定项)是条目数,因此比最高索引大一个。

Matrix<int> m = new Matrix<int>('C',4); // Creates a 3 x 4 matrix of ints
m['B',3] = 4;                           // m[1,3] = 4
© www.soinside.com 2019 - 2024. All rights reserved.