是否有语法可以用另一个集合来初始化一个集合?

问题描述 投票:0回答:1

没什么重要的,只是为了好奇。

鉴于以下代码片段,我们知道我们可以在

MyList
实例构造期间初始化
C
列表,这要归功于特殊的语法糖:

public class C {
    private List<int> _myList = new();
    public IList<int> MyList => this._myList;
}

public class D {
    public void Prova() {
        var c1 = new C() {
          MyList = { 1, 2, 3 }  //here
        };
    }
}

但是,如果我们需要从另一个列表/数组中提取数字,我想知道是否有类似的“简洁”方式,而不是在实例创建后添加每个数字。

即:

public class D {
    public void Prova() {
        var c1 = new C() {
          MyList = { 1, 2, 3 }
        };
        
        IList<int> list2 = [4, 5, 6];
        
        //classic approach, more verbose
        var c2 = new C();
        foreach (int n in list2) {
            c2.MyList.Add(n);
        }
        
        //just a suggestion (does not compile)
        var c3 = new C() {
          MyList = { ..list2 }  //clues?
        };
    }
}

有什么线索吗?值得吗?

c# collections initialization syntactic-sugar
1个回答
0
投票

不适用于集合初始化程序,它需要提供集合的elements

但是您可以使用

AddRange
,它将所提供集合的所有元素添加到您的列表中:

c2.MyList.AddRange(list2);

这假设

MyList
设置为任何值(但是集合初始化程序具有完全相同的假设)。

© www.soinside.com 2019 - 2024. All rights reserved.