如何声明这个嵌套数组/列表
本文关键字:嵌套 数组 列表 何声明 声明 | 更新日期: 2023-09-27 18:07:57
我有一个自定义类Gene
我想声明一个数组或列表(或其他任何更好的)命名为_slots
与400个位置…比如_slots[400]
每个_slot
必须包含一个溶液。然而,一个解决方案是我的自定义类Gene
的100数组。像这样:
_Slots
-------------
0 | Gene[100] |
--------------
1 | Gene[100] |
--------------
2 | Gene[100] |
--------------
3 | Gene[100] |
--------------
4 | Gene[100] |
--------------
...
400 | Gene[100] |
--------------
声明这一点并方便地访问所有成员的最佳方式是什么?
一个更好的方法是有一个代表Slot
的类,它反过来管理100个Gene
的实例。
然后,有一个包含400个插槽的数组(或IEnumerable
,或List<Slot>
,根据您的需要选择)。
public class Slot
{
private Gene[] _genes;
public Gene this[int index]
{
get{ return _genes[index];}
set{ _genes[index] = value;}
}
public Slot(int count = 100)
{
_genes = new Gene[count];
}
}
IList<Slot> slotsList = Enumerable.Range(0,400)
.Select(i => new Slot())
.ToList();
//or an enumerable
IEnumerable<Slot> slots = slotsList;
//or an array
Slot[] slotsArray = slotsList.ToArray();
由于每个维度的长度是相同的,因此二维数组似乎是合乎逻辑的。
Gene[,]
或者,如果数组的数量是可变的,则可以使用List<Gene[]>
,而不是设置400
List<Gene>[] lst = new List<Gene>[400];
try use
List<Gene[]> MegaList = new List<Gene[]>();
MegaList.Add(new Gene[100]);
MegaList[0][0] = new Gene();
我强烈建议将这个功能包装到类中,它将允许您在将来轻松地扩展它。例如:
public class MultiArray<T> : List<T> { }
...
MultiArray<Gene[]> Storage = new MultiArray<Gene[]>();