私は文字が打てます
Square[,,,] squares = new Square[3, 2, 5, 5];
squares[0, 0, 0, 1] = new Square();
実際、必要なメモリ量はわかりませんが、Int.MaxValue にディメンションを追加し続けることができると思います。
この変数インデックス機能を自分のクラスに実装するにはどうすればよいですか? 未知の次元の多次元配列をカプセル化し、それをプロパティとして利用できるようにして、この方法でインデックスを作成できるようにしたいと考えています。配列がどのように機能するか、常にサイズを知っておく必要がありますか?
編集
コメントをありがとう、これが私が最終的に得たものです-私はparamsについて考えましたが、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 私は今これを本当に必要としません。マルチ配列を使用しているときはいつでも(主に単体テストで)クラス外の for ループ初期化コードを回避するために解決された要素を初期化するために Array を拡張する方法を探していました。次に、intellisense を押して、Initialize メソッドを見ましたが、既定のコンストラクターと値の型に制限されています。参照型の場合、拡張メソッドが必要になります。それでも、私は何かを学びました。はい、32 次元を超える配列を試したときに実行時エラーが発生しました。