有没有办法执行以下操作:
var newObjects = Enumerable.Repeat(new MyClass(), 10);
myList.AddRange(newObjects);
上面显然不起作用,因为相同的实例被添加了10次。但是,是否有类似的东西可以使用,或者我需要使用for
循环吗?
答案 0 :(得分:4)
一个简单的解决方案是将占位符放在Enumerable.Repeat
中,然后使用投影构建实例:
var newObjects = Enumerable.Repeat(0, 10).Select(x => new MyClass());
注意:在您提供的示例中,您立即使用newObjects
,因此可以将其设为IEnumerable
。一般情况下,请注意不要多次枚举newObjects
,否则可能会产生创建MyClass
的其他意外情况的副作用。由于此表达式具有构造实例的副作用,因此最好使用ToList
或ToArray
立即实现它。
答案 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());