有没有办法做到以下几点:
var newObjects = Enumerable.Repeat(new MyClass(), 10);
myList.AddRange(newObjects);
上面显然不行,因为同一个实例被添加了10次。但是,是否有类似的东西可以使用,或者我是否需要使用 for
循环?
最佳答案
一个简单的解决方案是在 Enumerable.Repeat
中放置一个占位符,然后使用投影来构造您的实例:
var newObjects = Enumerable.Repeat(0, 10).Select(x => new MyClass());
注意:在您提供的示例中,您将立即使用 newObjects
,因此将其设为 IEnumerable
应该没问题。通常,请注意不要多次枚举 newObjects
,否则您可能会产生额外的 MyClass
意外实例的副作用。由于此表达式具有构造实例的副作用,因此最好立即使用 ToList
或 ToArray
实现它。
关于c# - Linq重复创建空对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36770752/