我的代码
List<BookedReelsState> retVal = new List<BookedReelsState>(somesize);
如果某些条件有效,我会在代码中稍后匹配,我需要用相同的值填充整个List。
当然我可以通过foreach
循环和设置值来实现,有更优雅的方法吗?
我只是想在这里学到新东西。
答案 0 :(得分:18)
retVal.AddRange(Enumerable.Repeat(value, somesize));
答案 1 :(得分:5)
retVal.ForEach(b => b.changedProp = newValue);
答案 2 :(得分:2)
这里有两件事。
首先,List<T>(int capacity)
不会创建包含capacity
项的列表。它只是为他们保留记忆。因此,上例中的列表将使其长度等于0。
但是如果你有一个列表并且想要设置它的每个元素,你可以这样做:
retVal.ForEach( rv => rv = desiredValue );
其中desiredValue是您要为每个元素设置的值。
我也觉得很奇怪你想用相同的值填充列表的每个元素。如果所有元素都相同,则列表没有用处,但我想您可能需要预先填充一些默认值,然后稍后更改其中的一些。
答案 3 :(得分:1)
如果您有IEnumerable,那么您可以使用List.AddRange。
示例:
var list = new List<BookedReelsState>(20);
var someEnumerable = new []
{
new BookedReelsState(1),
new BookedReelsState(2),
new BookedReelsState(2)
};
list.AddRange(someEnumerable);