填写清单<>的方法与元素

时间:2010-12-16 08:10:52

标签: c#

我的代码

List<BookedReelsState> retVal = new List<BookedReelsState>(somesize);

如果某些条件有效,我会在代码中稍后匹配,我需要用相同的值填充整个List。

当然我可以通过foreach循环和设置值来实现,有更优雅的方法吗? 我只是想在这里学到新东西。

4 个答案:

答案 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);