初始化列表<list <t>&gt;使用默认值

时间:2016-10-28 21:57:47

标签: c#

使用默认值(类型为T)初始化List<T>的方法之一是

List<int> foo = new List<int>(new int[5]);

这将创建一个包含5个零的List。你会怎样做List<List<T>>

我知道我们可以使用for循环或使用Enumerate.Repeat(但这会创建一个深层副本),但想知道它是否可以像上面那样完成?

2 个答案:

答案 0 :(得分:0)

您可以使用collection initializer初始化内联预定值的列表。

    object a, b, c, d, e;
    var foo = new List<object>()
    {
        a, b, c, d, e
    };

如果要初始化包含同一对象的多个实例的列表,则List类不提供任何解决方案。你可能应该坚持使用循环。

如果您正在寻找聪明的黑客,可以尝试:

var foo = new List<int>(Enumerable.Range(1, 5).Select(x => 42));
var bar = new List<string>(Enumerable.Range(1, 5).Select(x => "default"));
var far = new List<object>(Enumerable.Range(1, 5).Select(x => new object()));

但不要告诉任何我说过的人。

答案 1 :(得分:-1)

如果没有创建自己的子类,则无法实现。