我有以下列表:
List<List<BaseTile>> retVal = new List<List<BaseTile>>();
我需要用100个空List<BaseTile>
填充它(然后我会用我需要的东西填充它们)
这样做的方法就是:
for (i=0; i<100; i++)
retval.add(new List<BaseTile>());
我很确定在没有循环的情况下有一些LINQ技巧可以做到,我很好奇它是什么。我试过了:
retVal.AddRange(Enumerable.Repeat<List<BaseTile>>(new List<BaseTile>(),100));
但遗憾的是它没有做我想要的,因为列表中的所有列表都引用了相同的列表(这很有意义,因为这是重复的意思:))
答案 0 :(得分:6)
我看了一眼
for(i=0;i<100;i++)
retval.add(new List<BaseTile>());
直接理解它
Enumerable.Range(1, 100).Select(_ => new List<T>())
不明显。
K.I.S.S。
答案 1 :(得分:3)
Enumerable.Range(1, 100)
可以“伪造”for
循环。然后,您可以Select
离开生成的IEnumerable<int>
,忽略索引。
var result = Enumerable.Range(1, 100).Select(_ => new List<BaseTile>()).ToList();
如果您只想以其他方式使用100个空List<T>
个对象(即不在List<List<T>>
中),请省略ToList()
并自行枚举。