如何定义具有预定义容量的列表数组?

时间:2016-04-14 23:46:30

标签: c# arrays list

真的,我怎么能这样做? 这不起作用:

List<object>[] myList= new List<object>[100](500);

3 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情:

switch(input.nextLine()) {
    case ADD:
    ...
}

这里我们使用var array = Enumerable.Range(0,100).Select(n=>new List<object>(500)).ToArray(); 构造函数和一个参数,List的容量。请看一下here

答案 1 :(得分:1)

旧式循环可以解决这个问题:

List<object>[] myList= new List<object>[100];

for(int i = 0; i < 100; i++)
{
    myList[i] = new List<object>(500);
}

答案 2 :(得分:1)

您没有构建实际列表,只是分配空间来存储对它们的引用。您只能在构造列表对象时设置容量。

您可以将数组包装在另一个类中,并在需要时懒惰地构建列表:

class ListArray {
  private readonly List<object>[] _lists;
  private readonly int _capacity;

  public ListArray(int size, int capacity) {
    _lists = new List<object>[size];
    _capacity = capacity;
  }

  public List<object> this[int ix] {
    get { 
      if( _lists[ix] == null ) 
        _lists[ix] = new List<object>(capacity);
      return _lists[ix]
    }
  }
}

然后像

一样使用它
  var myList = new ListArray(100, 500);
  myList[0].Add(someObject);