首页 游戏 软件 资讯 排行榜 专题
首页
科技数码
C#集合操作新语法:用展开运算符(..)简化代码实战

C#集合操作新语法:用展开运算符(..)简化代码实战

热心网友
29
转载
2026-01-13

自 C# 13 起(需配合 .NET 9),语言新增了展开运算符(..),它让集合操作变得像写自然语言一样直白:你想“把这几个东西放一起”,就真的能直接“放一起”。

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

在 C# 中拼接数组、合并列表、复制集合,过去常依赖 Array.Copy()、.Concat() 或 .AddRange()。这些方法固然可靠,但代码往往冗长、嵌套深、意图不直观——尤其当需要组合多个来源时,几行逻辑可能写出十几行样板代码。

好消息是,从C# 13 起(需配合 .NET 9),语言新增了展开运算符(..),它让集合操作变得像写自然语言一样直白:你想“把这几个东西放一起”,就真的能直接“放一起”。

展开运算符怎么用?看几个典型场景

最基本的用法是合并两个数组或列表:

int[] part1 = [1, 2, 3];
int[] part2 = [4, 5, 6];
int[] combined = [..part1, ..part2]; // 结果:[1, 2, 3, 4, 5, 6]

不需要 .Concat(),不用 ToArray(),一行搞定,结果还是强类型数组。

也可以混合单个元素和集合:

int[] extras = [10, 20];
int[] allItems = [0, ..extras, 30]; // [0, 10, 20, 30]

甚至支持不同类型的集合混用——只要元素类型兼容:

int[] arr = [1, 2];
List list = [3, 4];
Span span = stackalloc int[] { 5, 6 };
var result = [..arr, ..list, ..span]; // [1, 2, 3, 4, 5, 6]

实际项目中,它特别适合构建动态配置:

string[] basePaths = ["/api", "/health"];
string[] customPaths = GetCustomEndpoints();
string[] allPaths = ["/", ..basePaths, ..customPaths];

或组装 API 响应:

var commonHeaders = ["Cache-Control: no-store"];
var customHeaders = GetServiceHeaders();
var responseHeaders = [..commonHeaders, ..customHeaders, "X-Request-ID: abc123"];

创建集合副本也更简洁:

int[] original = [1, 2, 3];
int[] copy = [..original]; // 等同于 original.ToArray(),但更短

为什么推荐它?

可读性高:[a, ..rest, b] 直观表达“开头是 a,中间是 rest 全部,结尾是 b”,意图一目了然。

减少样板代码:告别 new List { .. } 加上多次 .Add() 最后再 .ToArray() 的冗长链条。

类型安全:编译时检查元素类型,避免运行时类型不匹配。

性能合理:内部优化为单次内存分配,比链式 .Concat() 更高效(尤其多段拼接时)。

兼容性强:支持任何 IEnumerable,包括数组、列表、Span、自定义集合。

使用时要注意什么?

展开运算符创建的是浅拷贝——和 ToList()、ToArray() 行为一致,对引用类型元素,副本与原集合共享对象实例。

它不适用于需要转换或过滤的场景。例如,若想把所有 ID 加 100 后合并,仍需用 LINQ:

// ✅ 正确:需要转换时用 Select
var shifted = [..part1.Select(x => x + 100), ..part2];
// ❌ 低效:用 Spread 再手动改,反而更啰嗦

另外,目前仅支持 C# 13 配合 .NET 9。若项目仍在 .NET 6/8 或 C# 12,仍需沿用传统方式。可通过项目文件中的 preview 提前试用,但生产环境建议等正式发布。

何时该用、何时不用?

推荐使用场景:合并多个同类型集合;快速创建副本;动态组装配置、路径、参数列表;构造包含固定头尾和中间动态内容的集合。

暂不推荐场景:需要对元素做映射、过滤、排序等变换;处理超大集合(大于100万项),且对内存分配有极致要求;项目尚未升级到 .NET 9 / C# 13。

结语

展开运算符不是颠覆性创新,而是 C# 向“少写代码、多表意图”迈出的扎实一步。它不增加新概念,只是把开发者早已习惯的“展开”思维——如 JavaScript 的 ...、Python 的 *——自然地融入 C# 语法。

当一段集合操作需要反复读三遍才能看懂时,不妨试试 ..。往往一行简洁代码,胜过十行“正确但繁琐”的旧式写法。毕竟,好代码不仅要能跑,更要让人一眼看懂——这正是现代 C# 持续进化的核心目标。

来源:https://www.51cto.com/article/834073.html
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关攻略

C#中Parallel.For与普通for循环的5个关键差异解析
科技数码
C#中Parallel.For与普通for循环的5个关键差异解析

循环是一种基本的编程结构,用于迭代处理数组、集合或其他数据结构中的元素。其中,for循环是最常见的一种,但随着多核处理器的普及,在 NET 4中新增的抽象线程类Parallel。Parallel F

热心网友
03.16
揭秘C#命令模式:核心原理与实战应用案例详解
科技数码
揭秘C#命令模式:核心原理与实战应用案例详解

在C 中,命令模式通过促进对象之间的解耦,有助于构建更加模块化、灵活和可维护的代码库。 命令模式是一种行为设计模式,它将请求转化为独立对象,封装了与请求相关的所有信息。此对象能够灵活应对不同的请求,

热心网友
02.27
C#命令模式详解:实战应用与高效编程技巧
科技数码
C#命令模式详解:实战应用与高效编程技巧

在 C 中,命令模式通过促进对象之间的解耦,有助于构建更加模块化、灵活和可维护的代码库。 命令模式是一种行为设计模式,它将请求转化为独立对象,封装了与请求相关的所有信息。此对象能够灵活应对不同的请

热心网友
02.13
C# foreach修改集合时为何异常?深入解析原因与解决
科技数码
C# foreach修改集合时为何异常?深入解析原因与解决

在实际编码中,明确操作意图、选择匹配的循环结构,不仅能规避异常,更能提升代码的可读性与可维护性。 在C 日常开发中,开发者常会遇到一个典型场景:当尝试在foreach循环体内对List执行添加、删除

热心网友
02.10
C#集合操作新语法:用展开运算符(..)简化代码实战
科技数码
C#集合操作新语法:用展开运算符(..)简化代码实战

从 C 13 起(需配合 NET 9),语言新增了展开运算符( ),让集合操作变得像写自然语言一样直白:你想“把这几个东西放一起”,就真的能直接“放一起”。 在 C 中拼接数组、合并列表、复

热心网友
01.13

最新APP

你说我猜
你说我猜
休闲益智 03-31
史莱姆农场
史莱姆农场
休闲益智 03-31
凡人传说
凡人传说
角色扮演 03-30
恶魔秘境
恶魔秘境
角色扮演 03-29
猫和老鼠华为
猫和老鼠华为
休闲益智 03-29

热门推荐

14岁小S女儿反驳读书无用论:别把嫁豪门当退路
娱乐
14岁小S女儿反驳读书无用论:别把嫁豪门当退路

小S的三个女儿受人关注,一家人的一举一动都能引起大家的讨论与吐槽。尤其是她的三个漂亮女儿,大女儿许曦文20岁,在南加州读大学。二女儿许韶恩18岁,开始在贵圈发展,许老三许曦恩14岁,也开始频繁露面。

热心网友
03.31
华硕27吋QHD 180Hz IPS显示器PG27QFT2C/QFT1B选购指南
礼仪与书信
华硕27吋QHD 180Hz IPS显示器PG27QFT2C/QFT1B选购指南

IT之家 3 月 31 日消息,华擎 ASRock 现已推出两款幻影电竞系列显示器 PG27QFT2C 和 PG27QFT1B。两款型号拥有一致的核心规格,均采用 27 英寸 QHD (2560×1

热心网友
03.31
iPhone 20预测:1.1毫米极窄边框与四曲屏将成最大亮点
网络安全
iPhone 20预测:1.1毫米极窄边框与四曲屏将成最大亮点

3月31日消息,据报道,苹果20周年纪念版iPhone 20将采用1 1毫米极窄屏幕边框,搭配极致圆润的边缘处理与四曲面瀑布屏设计,整机视觉效果接近无缝玻璃面板。此次曝光的设计核心为真全面屏形态,为

热心网友
03.31
QQ邮箱官方登录入口与网页版最新地址
电脑教程
QQ邮箱官方登录入口与网页版最新地址

QQ邮箱网页版最新最新地址是https: mail qq com,支持多方式快捷验证、跨终端实时同步、大文件智能传输、智能地址分类管理及多重安全防护。QQ邮箱登录入口正式 QQ邮

热心网友
03.31
vivo X300系列正式发布:售价4999元起,专业影像旗舰
科技数码
vivo X300系列正式发布:售价4999元起,专业影像旗舰

2026年3月30日,vivo于云南丽江正式发布vivo X300系列全新旗舰手机——vivo X300 Ultra、vivo X300s,重塑移动影像新高度。打破拍照与摄像的设备鸿沟,带来手机中的

热心网友
03.31