如何声明这个嵌套数组/列表

本文关键字:嵌套 数组 列表 何声明 声明 | 更新日期: 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[]>();