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

时间:2014-06-09 09:06:12

标签: c# arrays list

我有自定义课程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] |
    --------------

宣布此内容并轻松访问所有成员的最佳方式是什么?

4 个答案:

答案 0 :(得分:2)

很多更好的方法是拥有一个代表Slot的类,后者又管理100个Gene个实例。

然后,有一个包含400个插槽(或IEnumerableList<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];
相关问题