Jak zaimplementować indeksator Array w języku C #

mogę pisać

Square[,,,] squares = new Square[3, 2, 5, 5];
squares[0, 0, 0, 1] = new Square();

W rzeczywistości spodziewam się, że mógłbym kontynuować dodawanie wymiarów do Int.MaxValue, chociaż nie mam pojęcia, ile pamięci wymagałoby.

Jak mogę zaimplementować tę funkcję indeksowania zmiennych w mojej klasie? Chcę hermetyzować wielowymiarową tablicę o nieznanych wymiarach i udostępnić ją jako właściwość, umożliwiając w ten sposób indeksowanie. Czy zawsze muszę znać rozmiar, w jakim przypadku działa Array?

EDYTOWAĆ

Dzięki za komentarze, oto co otrzymałem - pomyślałem o paramach, ale nie wiedziałem, po co to robić, nie wiedząc o GetValue.

class ArrayExt<T>
{
  public Array Array { get; set; }

  public T this[params int[] indices] 
  {
      get { return (T)Array.GetValue(indices); }
      set { Array.SetValue(value, indices);}
  }
}

ArrayExt<Square> ext = new ArrayExt<Square>();
ext.Array = new Square[4, 5, 5, 5];
ext[3, 3, 3, 3] = new Square();

TBH nie potrzebuję tego teraz. Po prostu szukałem sposobu na rozszerzenie Array, aby zainicjował jego elementy, postanawiając uniknąć kodu inicjującego dla pętli poza klasą, gdy korzystałem z wielu tablic (głównie w testach jednostek). Następnie trafiłem na intellisense i zobaczyłem metodę Initialize ... chociaż ogranicza mnie do domyślnego konstruktora i typów wartości. W przypadku typów referencyjnych wymagana byłaby metoda rozszerzenia. Wciąż się czegoś nauczyłem i tak, wystąpił błąd podczas wykonywania macierzy z ponad 32 wymiarami.

questionAnswers(3)

yourAnswerToTheQuestion