我有自定义课程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] |
--------------
宣布此内容并轻松访问所有成员的最佳方式是什么?
答案 0 :(得分:2)
很多更好的方法是拥有一个代表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();
答案 1 :(得分:1)
尝试使用
List<Gene[]> MegaList = new List<Gene[]>();
MegaList.Add(new Gene[100]);
MegaList[0][0] = new Gene();
我强烈建议将此功能包装到类中,它将允许您以后轻松扩展它, f.e:
public class MultiArray<T> : List<T> { }
...
MultiArray<Gene[]> Storage = new MultiArray<Gene[]>();
答案 2 :(得分:1)
由于每个维度的长度相同,因此二维数组似乎是合乎逻辑的。
Gene[,]
或者,如果数组的数量是可变的而不是设置值400,则可以使用List<Gene[]>
答案 3 :(得分:1)
List<Gene>[] lst = new List<Gene>[400];