1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| class MDArray<T> where T : new()
{
T [] data;
int [] dimensions;
public MDArray(params int [] _dimensions) {
dimensions = _dimensions;
int total_length = 1;
foreach (int d in dimensions)
total_length *= d;
data = new T [total_length];
}
public T this [params int [] indexes] {
get {
return data [getIndex(indexes)];
}
set {
data [getIndex(indexes)] = value;
}
}
private int getIndex(int [] indexes) {
int index = 0,
k = 1;
for (int i = 0 ; i < indexes.Length ; k *= dimensions [i], i++)
index += indexes [i] * k;
return index;
}
} |
Partager