C#中[..collection]运算符的含义及使用方法咨询
C#
[..collection] 运算符用法说明 [..collection] 是C# 8.0引入的范围语法的简写形式,核心作用是快速获取目标集合的完整浅拷贝,等价于写 collection[0..^0](其中0代表集合起始索引,^0代表从集合末尾开始偏移0的位置,即覆盖整个集合的范围)。
核心用法与场景
快速复制集合
对于数组、List<T>、Span<T>等实现了索引器或IEnumerable<T>的类型,用这个语法可以一行完成浅拷贝:var original = new int[] { 1, 2, 3 }; var copy = original[..]; // 修改拷贝后的元素不会影响原集合(值类型场景) copy[0] = 99; Console.WriteLine(original[0]); // 输出 1配合部分范围语法使用
它可以和其他范围语法组合,灵活截取集合的不同部分:var numbers = new[] { 10, 20, 30, 40, 50 }; var allItems = numbers[..]; // 获取全部元素:{10,20,30,40,50} var firstTwo = numbers[..2]; // 获取前2个元素:{10,20} var lastThree = numbers[^3..]; // 获取最后3个元素:{30,40,50} var middleRange = numbers[1..^1]; // 获取中间部分(排除首尾):{20,30,40}
注意事项
- 浅拷贝特性:如果集合中的元素是引用类型,拷贝后的集合与原集合会指向同一个对象实例。修改对象的属性会同时影响两个集合,仅集合本身的结构(比如添加/删除元素)是独立的。
- 版本要求:必须使用C# 8.0或更高版本,需要在项目设置中确认语言版本配置。
- 适用类型:支持所有内置的可索引集合,自定义集合需要实现对应的索引器或
IEnumerable<T>才能使用该语法。
内容的提问来源于stack exchange,提问作者cughudson
相关产品推荐
相关产品推荐

