Linq重复创建空对象?

时间:2016-04-21 13:14:16

标签: c# linq

有没有办法执行以下操作:

var newObjects = Enumerable.Repeat(new MyClass(), 10);
myList.AddRange(newObjects);

上面显然不起作用,因为相同的实例被添加了10次。但是,是否有类似的东西可以使用,或者我需要使用for循环吗?

2 个答案:

答案 0 :(得分:4)

一个简单的解决方案是将占位符放在Enumerable.Repeat中,然后使用投影构建实例:

var newObjects = Enumerable.Repeat(0, 10).Select(x => new MyClass());

注意:在您提供的示例中,您立即使用newObjects,因此可以将其设为IEnumerable。一般情况下,请注意不要多次枚举newObjects,否则可能会产生创建MyClass的其他意外情况的副作用。由于此表达式具有构造实例的副作用,因此最好使用ToListToArray立即实现它。

答案 1 :(得分:0)

看看文档: https://msdn.microsoft.com/en-us/library/bb348899(v=vs.100).aspx

你总是得到同一个实例而不是10个不同的对象。

举个例子:

for(var i = 0; i< 10; i ++)   list.Add(new MyClass());