C# Linq重复创建空对象?
有没有办法做到以下几点:C# Linq重复创建空对象?,c#,linq,C#,Linq,有没有办法做到以下几点: var newObjects = Enumerable.Repeat(new MyClass(), 10); myList.AddRange(newObjects); 上述方法显然不起作用,因为同一实例被添加了10次。但是,是否可以使用类似的方法,或者我是否需要为循环使用?一个简单的解决方案是在可枚举中放置一个占位符。重复,然后使用投影来构造实例: var newObjects = Enumerable.Repeat(0, 10).Select(x => new
var newObjects = Enumerable.Repeat(new MyClass(), 10);
myList.AddRange(newObjects);
上述方法显然不起作用,因为同一实例被添加了10次。但是,是否可以使用类似的方法,或者我是否需要为循环使用
?一个简单的解决方案是在可枚举中放置一个占位符。重复
,然后使用投影来构造实例:
var newObjects = Enumerable.Repeat(0, 10).Select(x => new MyClass());
注意:在您提供的示例中,您正在立即使用newObjects
,因此这应该是一个IEnumerable
。通常,请注意不要多次枚举新对象
,否则可能会产生副作用,即创建MyClass
的其他意外实例。由于此表达式具有构造实例的副作用,因此最好立即使用ToList
或ToArray
将其具体化。一个简单的解决方案是在Enumerable中放置一个占位符。重复,然后使用投影来构造实例:
var newObjects = Enumerable.Repeat(0, 10).Select(x => new MyClass());
注意:在您提供的示例中,您正在立即使用newObjects
,因此这应该是一个IEnumerable
。通常,请注意不要多次枚举新对象
,否则可能会产生副作用,即创建MyClass
的其他意外实例。由于此表达式具有构造实例的副作用,因此最好立即使用ToList
或ToArray
将其具体化。请查看文档:
您总是得到相同的实例,而不是10个不同的对象
举个例子:
对于(变量i=0;i<10;i++)
添加(新的MyClass()) 查看文档:
您总是得到相同的实例,而不是10个不同的对象
举个例子:
对于(变量i=0;i<10;i++)
添加(新的MyClass()) Enumerable.Range
Enumerable.Range