【问题标题】:Shortest way to create a List<T> of a repeated element创建重复元素的 List<T> 的最短方法
【发布时间】:2010-11-10 09:08:15
【问题描述】:

使用 String 类,您可以:

string text = new string('x', 5);
//text is "xxxxx"

创建一个充满n 元素的列表 的最短方法是什么,这些元素都是相同的引用?

【问题讨论】:

    标签: c# .net .net-3.5 list


    【解决方案1】:

    试试下面的

    var l = Enumerable.Repeat('x',5).ToList();
    

    【讨论】:

    • #注意:对于引用类型,它会生成一个包含 5 个对 same 实例的引用的列表。例如:var l = Enumerable.Repeat(new SomeRefType(),5).ToList(); 将创建 SomeRefType 的单个实例并用 5 个对该实例的引用填充列表。
    【解决方案2】:

    我知道的最快方法是:

    int i = 0;
    MyObject obj = new MyObeject();
    List<MyObject> list = new List<MyObject>();
    for(i=0; i< 5; i++)
    {
        list.Add(obj);
    }
    

    如果你想多次使用,你可以做一个扩展方法。

    public void AddMultiple(this List<T> list, T obj, int n)
    {
        int i;
        for(i=0;i<n;i++)
        {
            list.Add(obj);
        }
    }
    

    那么你可以这样做:

    List<MyObject> list = new List<MyObject>();
    MyObject obj = new MyObject();
    list.AddMultiple(obj, 5);
    

    【讨论】:

    • 如果知道列表长度,在构造时设置:var list = new List(5);
    【解决方案3】:

    这看起来很简单......

    for( int i = 0; i < n; i++ ) { lst.Add( thingToAdd ); }
    

    :D

    【讨论】:

    • 我知道该怎么做。我说最短。
    • 我不是反对你的人,顺便说一句。很容易犯错,因为我没有在标题中说出来。更新了:)
    • np ...我想知道您对最短的定义是什么?缩小?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-23
    • 1970-01-01
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 2022-07-27
    • 2016-05-15
    相关资源
    最近更新 更多