【问题标题】:How to set all values of a list in C# [duplicate]如何在C#中设置列表的所有值[重复]
【发布时间】:2019-07-14 07:52:06
【问题描述】:

我正在寻找 Array.Fill 的等价物,但用于 List

是否可以用某个值填充所有列表项

Array.Fill(counters, max); // this works

listName.Fill(5);   //something like this

将用 5 填充列表

我不想使用循环

鉴于列表中有一些项目

【问题讨论】:

  • for 循环有什么问题?或者做一个扩展方法?无论哪种方式,都必须循环
  • 循环会导致更多的运行时间
  • 我以为你只是想要一个单线。您应该知道,在底层,所有内容(重复的)都会转换为循环。你同样对循环有一个非常错误的想法。
  • @AdamBahrani 是的,Array.Fill 是有原因的,但这不是你想的那样。这是为了节省开发人员的时间,而不是提高性能。 Array.Fill() 只是使用循环来迭代和设置元素(here's the source code;你可以自己检查)。您必须以一种或另一种方式使用循环;没有办法解决这个问题。就像我上面说的,你对循环有一个非常错误的想法。

标签: c#


【解决方案1】:

Enumerable.Repeat(TResult, Int32) Method

var fives = Enumerable.Repeat(5, 10).ToList(); // create list with ten fives

无论如何,您都需要循环现有列表的所有项目,只需使用扩展方法包装循环即可。

public static void FillWith<T>(this List<T> list, T value)
{
    for (var i = 0, i < list.Count, i++)
    {
        list[i] = value;
    }
}

用法

var list = new List<int> { 1, 2, 3, 4, 5 };
list.FillWith(42);

var output string.Join(",", list); // 42,42,42,42,42    

【讨论】:

  • 赞成投票,因为这与我正在寻找的内容一致,但我认为有一种方法可以在没有迭代的情况下做到这一点,只有一个。
猜你喜欢
  • 2015-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-13
  • 2020-02-03
  • 2014-02-23
  • 1970-01-01
相关资源
最近更新 更多