|
C# 7 的 Span
C# 7 里面出现了Span这个数据类型,它可以表示另一个数据结构里连续相邻的一串数据,并且它是内存安全的。
C# 8 的Range类型
而C# 8里面我们可以从一个序列里面很简单的提取出来一个子范围组成新的序列。
arr[2..4]表示把arr这个序列,从索引为2的元素一直到索引为4(但不包括索引4)的元素提取出来组成新的序列。所以结果就是3,4。
Range类型
C# 8 的Index类型
Index 类型和 ^ 操作符
这里使用了末尾运算符(Hat运算符) ^ 和 Index这个类型。
这里面的 ^2 表示从序列的倒数第二个元素,也就是从末尾开始算的第二个元素。所以输出是9。
而如果你使用arr[^0]的话就会抛出IndexOutOfRangeException,arr[^0] 和 arr[arr.Length] 是一个意思。
这确实有点容易让人混淆,但其实其它语言也差不多是这样设计的,例如 -1 这个索引表示最后一个元素。
组合使用 Range 和 Index
再次强调,Range的范围包含Start不包含End。
所以索引为0的元素包含,索引为10或者^0的元素不包含(尽管也不存在)。
总结一下:
-
Range类型;
-
Range运算符:..
-
Index类型;
-
从头开始的索引是从0开始的
-
从尾部开始的索引是从1开始的,与序列的长度相关。
-
Hat 运算符:^
详细文档请点击这个链接:https://docs.microsoft.com/zh-cn/dotnet/csharp/tutorials/ranges-indexes?WT.mc_id=DT-MVP-5003302
来源:https://www.cnblogs.com/yangxu-pro/p/11677002.html |