C# 范围和索引(Ranges and Indices) - ..和^操作符

php中文网
发布: 2025-12-06 18:16:02
原创
284人浏览过
C# 的范围(..)和索引(^)操作符是语法糖,^n 表示从末尾数第 n 个,等价于 length - n;.. 创建左闭右开区间,支持 int 和 Index 类型,需目标类型提供 Range 索引器,常见于数组、字符串、Span。

c# 范围和索引(ranges and indices) - ..和^操作符

C# 的范围(..)和索引(^)操作符是 C# 8.0 引入的语法糖,让数组、字符串、Span 等支持索引的类型更简洁地表达“取某一段”或“从末尾数第几个”,不用再手动算长度。

^ 表示从末尾开始的索引

^n 等价于 length - n,其中 n 是正整数。它不是负数索引,而是一个独立的索引类型 System.Index

  • array[^1] 取最后一个元素,等价于 array[array.Length - 1]
  • array[^3] 取倒数第三个,等价于 array[array.Length - 3]
  • ^0 是合法的,但对应的是 length - 0,即越界位置(常用于范围的右边界)

.. 表示范围(Range)

start..end 创建一个 System.Range,表示从 start(含)到 end(不含)之间的子序列。start 和 end 都可以是 intIndex

  • str[2..5] 取下标 2、3、4 的字符(共 3 个)
  • arr[..3] 取前 3 个元素(等价于 0..3
  • arr[3..] 取从下标 3 到末尾(等价于 3..arr.Length
  • arr[^3..^1] 取倒数第 3 个(含)到倒数第 1 个(不含),也就是倒数第 3 和第 2 个

底层其实是 RangeIndex 类型

编译器会把 ^n 转成 new Index(n, fromEnd: true),把 a..b 转成 new Range(new Index(a), new Index(b))。目标类型必须提供接受 Range 的索引器(如 string.this[Range]T[] this[Range])才能使用。

Sitekick
Sitekick

一个AI登陆页面自动构建器

Sitekick 121
查看详情 Sitekick
  • 内置支持的类型包括:数组(T[])、stringSpan<t></t>ReadOnlySpan<t></t>
  • 自定义类型要支持,需定义形如 public T[] this[Range range] => ... 的索引器
  • 注意:Range 本身不执行越界检查,实际切片时由目标类型的索引器负责校验

常见误区和注意事项

这些操作看着简单,但容易踩坑:

  • ^0 不是最后一个元素,而是“长度位置”,用作范围右边界时才自然(如 [2..^0] 表示从 2 到末尾)
  • arr[^5..^2] 要求数组长度 ≥ 5;如果长度只有 3,^5 就会抛 IndexOutOfRangeException
  • 范围不支持反向(如 5..2),也不支持步长(不能写 [..^1 by 2])——那是 LINQ 的事
  • 字符串使用范围返回的是新字符串(不可变),不是视图;而 Span 返回的是原内存的只读视图

基本上就这些。写起来清爽,读起来直观,只要记住 ^n 是“倒数第 n 个”,.. 是“左闭右开”,再配合类型是否真正支持,就很少出错。

以上就是C# 范围和索引(Ranges and Indices) - ..和^操作符的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号