C# 8 使用 Index 和 Range 简化集合操作

有的语言数组的索引值是支持负数的,表示从后向前索引,比如:arr[-1]
从 C# 8 开始,C# 支持了数组的反向 Index,和 Range 操作,反向 Index 类似于其他语言中的负索引值,但其实是由编译器帮我们做了一个转换,Range 使得我们对数组截取某一部分的操作会非常简单。

Sample

使用 ^ 可以从集合的最后开始索引元素,如果从数组的最后开始索引元素,最后一个元素应该是 1 而不是0如: arr[^1]
使用 .. 可以基于某个数组截取集合中的某一段创建一个新的数组,比如 var newArray = array[1..^1]

1
2
3
4
5
6
7
8
9
10
11
12
13
int[] someArray = new int[5] { 1, 2, 3, 4, 5 };
int lastElement = someArray[^1]; // lastElement = 5
lastElement.Dump();

someArray[3..5].Dump();

someArray[1..^1].Dump();

someArray[1..].Dump();

someArray[..^1].Dump();

someArray[..2].Dump();

输出结果如下:

1
2
3
4
5
6
7
8
9
10
11
5

[4,5]

[2,3,4]

[2,3,4,5]

[1,2,3,4]

[1,2]