Замена многомерного массива списком (List) - C#
Формулировка задачи:
Помогите с реализацией замены многомерного массива списком(List).
Решение задачи: «Замена многомерного массива списком (List)»
textual
Листинг программы
using System;
using System.Collections.Generic;
namespace ConsoleApplication170
{
class Program
{
static void Main(string[] args)
{
var array = new MultDimArray<int>(3, 4, 5); // трехмерный массив 3 x 4 x 5
array[2, 3, 4] = 15;
var v = array[2, 3, 4];
Console.WriteLine(v);
Console.ReadLine();
}
}
class MultDimArray<T>
{
private List<T> list;
private int[] dimensions;
public MultDimArray(params int[] dimensions)
{
this.dimensions = dimensions;
var count = 1;
for (int i = 0; i < dimensions.Length; i++)
count *= dimensions[i];
list = new List<T>(count);
for (int i = 0; i < count; i++)
list.Add(default(T));
}
int GetSignature(int[] indexes)
{
var res = indexes[0];
for(int i=1;i<dimensions.Length;i++)
res = res * dimensions[i] + indexes[i];
return res;
}
public T this[params int[] indexes]
{
get { return list[GetSignature(indexes)]; }
set { list[GetSignature(indexes)] = value; }
}
}
}