これはかなりの構文あなたではありません探していたが、あなたのニーズに合っていると思う。あなたが望む動作を取得するためには、2次元マトリックスを格納し、代わりに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
あなたが見ることができるように、コードがあるの受け入れを[]
演算子をオーバーロードするクラスを作成する必要があります実際にはかなりシンプルです。 char
データ型にはその文字のASCII値が格納されているという利点があります。もし
Matrix<int> m = new Matrix<int>(3,4); // Creates a 3 x 4 matrix of ints
m['B',3] = 4; // m[1,3] = 4
EDIT
: 'A' を離れて差し引くことにより、私たちは、あなたがそうのような文字を使用して、マトリックスを呼び出すことができるなど、1として 'B'、0として 'A' を使用することができますあなたは、あなたも、あなたが初期化するために使用する文字は、アレイの整数初期化子のように、entriの数であることをchar
public Matrix(char x, int y) {
arr = new T[x - 'A' + 1, y];
}
注意を受け入れるようにコンストラクタを修正することができると思いましたes、したがって最も高いインデックスよりも1つ大きい。
Matrix<int> m = new Matrix<int>('C',4); // Creates a 3 x 4 matrix of ints
m['B',3] = 4; // m[1,3] = 4
どのような言語ですか?ほとんどはカスタムインデックス作成をサポートしていませんが、文字を受け入れるゲッターメソッドとセッターメソッドを持つ2D配列を内部的に持つクラスを作成できます。 –
@ElanHamburger C# – siddharth