真的,我怎么能这样做? 这不起作用:
List<object>[] myList= new List<object>[100](500);
答案 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);