没什么重要的,只是为了好奇。
鉴于以下代码片段,我们知道我们可以在
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?
};
}
}
有什么线索吗?值得吗?
不适用于集合初始化程序,它需要提供集合的elements。
但是您可以使用
AddRange
,它将所提供集合的所有元素添加到您的列表中:
c2.MyList.AddRange(list2);
这假设
MyList
设置为任何值(但是集合初始化程序具有完全相同的假设)。