我可以打字
事实上,我希望我可以继续添加到Int.MaxValue的维度,尽管我不知道那需要多少内存。
如何在自己的类中实现此变量索引功能?我想要封装一个未知维度的多维数组,并将其作为属性提供,从而使索引成为可能。必须始终知道大小吗?如果是这样,那么Array是如何工作的?
编辑:
感谢评论,以下是我的最终代码 - 我考虑了params但不知道接下来该怎么做,因为不知道GetValue。
Square[,,,] squares = new Square[3, 2, 5, 5];
squares[0, 0, 0, 1] = new Square();
事实上,我希望我可以继续添加到Int.MaxValue的维度,尽管我不知道那需要多少内存。
如何在自己的类中实现此变量索引功能?我想要封装一个未知维度的多维数组,并将其作为属性提供,从而使索引成为可能。必须始终知道大小吗?如果是这样,那么Array是如何工作的?
编辑:
感谢评论,以下是我的最终代码 - 我考虑了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();
说实话,我现在并不需要这个。我只是在寻找一种方法来扩展数组,并初始化其元素以避免在使用多维数组时在类外部编写for循环初始化代码(主要用于单元测试)。然后,我看到了Intellisense和Initialize方法......虽然它限制了我只能使用默认构造函数和值类型。对于引用类型则需要使用扩展方法。尽管如此,我还是学到了一些东西,但是当我尝试使用超过32个维度的数组时,出现了运行时错误。