You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中能否用扩展运算符语法糖,以其他集合初始化对象内的集合?

集合初始化语法糖能否直接导入已有集合的元素?

我们知道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 }  // 借助语法糖直接初始化集合
        };
    }
}

但如果要把另一个已有的列表/数组中的元素导入到新实例的集合中,有没有类似的简洁语法?不用像下面这样通过循环逐个调用Add方法:

public class D {
    public void Prova() {
        var c1 = new C() {
          MyList = { 1, 2, 3 }
        };
        
        IList<int> list2 = [4, 5, 6];
        
        // 传统写法,较为繁琐
        var c2 = new C();
        foreach (int n in list2) {
            c2.MyList.Add(n);
        }
        
        // 期望的简洁写法(无法编译)
        var c3 = new C() {
          MyList = { ..list2 }  // 是否存在类似的语法?
        };
    }
}

补充说明:C类的代码(包括MyList的签名)不可修改,我清楚有很多变通方案,但仅关注是否存在能实现该目标的语法糖。

另外注意到数组的扩展运算符可以实现集合合并:

IList<int> list2 = [4, 5, 6];
IList<int> a = [..c1.MyList, ..list2];

它底层会遍历源集合创建新数组,既然编译器能在集合初始化时调用Add方法填充元素,那实现直接导入已有集合元素的语法应该不难,因此想确认是否存在这类语法。

内容的提问来源于stack exchange,提问作者Mario Vernari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 08:32:54