末尾运算符 ^和范围运算符 .
从末尾运算符 ^ 开始索引
^ 运算符在 C# 8.0 和更高版本中提供,指示序列末尾的元素位置。
- 对于长度为 length 的序列,^n 指向与序列开头偏移 length - n 的元素。
例如:
- ^1 指向序列的最后一个元素,
- ^length 指向序列的第一个元素。
int[] xs = new[] { 0, 10, 20, 30, 40 };
int last = xs[^1];
Console.WriteLine(last); // output: 40var lines = new List<string> { "one", "two", "three", "four" };
string prelast = lines[^2];
Console.WriteLine(prelast); // output: threestring word = "Twenty";
Index toFirst = ^word.Length;
char first = word[toFirst];
Console.WriteLine(first); // output: T
如前面的示例所示,表达式 ^e 属于 System.Index 类型。
在表达式 ^e 中,e 的结果必须隐式转换为 int。
还可以将 ^ 运算符与范围运算符一起使用以创建一个索引范围。
范围运算符 .
… 运算符在 C# 8.0 和更高版本中提供,指定索引范围的开头和末尾作为其操作数。
- 左侧操作数是范围的包含性开头。
- 右侧操作数是范围的包含性末尾。
任一操作数都可以是序列开头或末尾的索引,如以下示例所示:
int[] numbers = new[] { 0, 10, 20, 30, 40, 50 };
int start = 1;
int amountToTake = 3;
int[] subset = numbers[start..(start + amountToTake)];
不包含 下标=4
Display(subset); // output: 10 20 30int margin = 1;
int[] inner = numbers[margin..^margin];
//[ 下标1-4,不包含最后一个数字 => ^-1=下标5]
Display(inner); // output: 10 20 30 40string line = "one two three";
int amountToTakeFromEnd = 5;
Range endIndices = ^amountToTakeFromEnd..^0;
string end = line[endIndices];
Console.WriteLine(end); // output: threevoid Display<T>(IEnumerable<T> xs) => Console.WriteLine(string.Join(" ", xs));
如前面的示例所示,表达式 a…b 属于 System.Range 类型。 在表达式 a…b 中,a 和 b 的结果必须隐式转换为 int 或 Index。
可以省略 … 运算符的任何操作数来获取无限制范围:
a.. 等效于 a..^0
..b 等效于 0..b
.. 等效于 0..^0
int[] numbers = new[] { 0, 10, 20, 30, 40, 50 };
int amountToDrop = numbers.Length / 2;int[] rightHalf = numbers[amountToDrop..];
Display(rightHalf); // output: 30 40 50int[] leftHalf = numbers[..^amountToDrop];
Display(leftHalf); // output: 0 10 20int[] all = numbers[..];
Display(all); // output: 0 10 20 30 40 50void Display<T>(IEnumerable<T> xs) => Console.WriteLine(string.Join(" ", xs));
运算符可重载性
.、()、^ 和 … 运算符无法进行重载。 [] 运算符也被视为非可重载运算符。 使用索引器以支持对用户定义的类型编制索引。
末尾运算符 ^和范围运算符 .相关推荐
- MySQL运算符(逻辑运算符,比较运算符,位运算符)
MySQL的运算符包括: 算术运算符 (类似数学中的 + - * /),在此基础上增加取余,也就是模运算,比较运算符,逻辑运算符,非符号运算符,位运算符. 本次重点讲解 逻辑运算符,和比较运算符,非符 ...
- Go 学习笔记(5)— 算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、取地址和指针运算符
1. Go 运算符分类 Go 语言内置的运算符有: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 其他运算符 1.1 算术运算符 下表列出了所有Go语言的算术运算符.假定 A 值为 10, ...
- Python中is同一性运算符和==相等运算符区别
2019独角兽企业重金招聘Python工程师标准>>> 在区分is和==这两种运算符区别之前,需要知道Python中对象包含的三个基本要素,分别是:id(身份标识).type(数据类 ...
- python运算符(算数运算符、赋值运算符、复合赋值运算符、比较运算符、逻辑运算符)
常见的运算符: 算数运算符 赋值运算符 复合赋值运算符 ⽐较运算符 逻辑运算符 1. 算数运算符 注意: 混合运算优先级顺序: () ⾼于 ** ⾼于 * / // % ⾼于 + - ...
- Swift中空合运算符、闭区间运算符、单侧区间、半开区间
空合运算符(Nil Coalescing Operator) 用于取代3目判空运算,提供超短的写法 比如常规判空写法如下,反正我写java就是这么干的 var anOptionalInt: Int? ...
- linux脚本或关系表达,Shell运算符:Shell算数运算符、关系运算符、布尔运算符、字符串运算符等...
Bash 支持很多运算符,包括算数运算符.关系运算符.布尔运算符.字符串运算符和文件测试运算符. 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最 ...
- oracle 条件查询,比较运算符,逻辑运算符,特殊运算符,判断空值,大小写敏感,多行,多列子查询...
oracle 条件查询,比较运算符,逻辑运算符,特殊运算符,判断空值,大小写敏感,多行,多列子查询博客分类: oracle OracleSQL 比较运算符 >,<:大于,小于 >=. ...
- C++语言之可重载运算符/不可重载运算符
下面是可重载的运算符列表: 双目算术运算符 + (加),-(减),*(乘),/(除),% (取模) 关系运算符 ==(等于),!= (不等于),< (小于),> (大于),<=(小于 ...
- java if赋值语句_Java基础第3天+运算符(算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、三元运算符)、Scanner键盘录入、if语句...
1:运算符(掌握) (1)算术运算符 A:+,-,*,/,%,++,-- B:+的用法 a:加法 b:正号 c:字符串连接符 C:/和%的区别 数据做除法操作的时候,/取得是商,%取得是余数 D:++ ...
最新文章
- poj 1950 Dessert(dfs枚举,模拟运算过程)
- java 鼠标拖动矩形_java – 用鼠标拖动创建矩形,而不是绘制
- opencv 图像访问索引
- STM32----TIM6和TIM7
- Hadoop2.x介绍与源代码编译
- Bailian2854 点和正方形的关系【水题】
- MyEclipse10破解详解过程
- SAP SD pricing condition技术在系统里的一些练习
- The error occurred while setting parameters
- 阿里妈妈年赚2500亿:淘宝商家的“曝光焦虑”生意好做吗?
- php checkbox默认选择问题,PHP_php select,radio和checkbox默认选择的实现方法,这是扩展yibing的select默认选择 - phpStudy...
- Automated defect inspection system for metal surfaces based on deep learning and data augmentation
- 基于STM32(HAL库)的水质检测(浑浊度、PH值、温度、手机APP显示、wifi上云)
- 如何查看已安装的Linux内核
- linux_时区修改
- 在linux环境下测试和使用aria2c
- 图解pandas的数据合并merge
- 直播预告 | ICLR专场二
- 基于landsat7数据的TDVI指标计算
- 反向传播算法(BP算法)学习总结
热门文章
- CAMP模型——估计资本成本的模型
- Luminati代理动态IP,海量资源可调用!
- mysql自然连接的例题详解_基于 MySQL 的数据库实践(自然连接)
- 马尔可夫过程(Markov Process)和马尔可夫链
- hdu 5418 Victor and World (floyd+状压dp)
- Monte Carlo Integration 蒙特卡罗方法求积分 附简单例题+代码
- csdn首篇笔记——关于笔记本身
- 戴口罩人脸识别、高精度人脸识别解决方案
- Unity3D 网页插件Embedded Browser(ZFBrowser)PC端打包文件无法加载网页解决方法
- Google 宣布 GSoC 2014 计划Fwd: Google Summer of Code 2014 + 10 Things