📅  最后修改于: 2023-12-03 15:00:14.277000             🧑  作者: Mango
C# 8.0中加入了一个新的结构类型:范围(System.Range
)。范围结构提供了一种简单、直观的从序列中选取连续子集的方式。
要使用范围结构,需要使用 ..
操作符指定范围的开始和结束。例如,0..10
表示从索引为0开始,到索引为9结束(索引从0开始计数)。
范围还支持省略开始或结束位置。例如,..10
表示从序列开始到索引为9结束;5..
表示从索引为5开始直到序列结束。
可以将范围用作索引器的参数,以选取指定范围内的元素。例如:
int[] numbers = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int[] subset = numbers[2..5]; // { 2, 3, 4 }
可以在 foreach
循环中使用范围,以迭代指定范围内的元素。例如:
foreach (int i in numbers[2..5])
{
Console.Write(i + " "); // 输出:2 3 4
}
范围结构的实现是通过两个字段来表示范围的开始和结束位置。开始位置可以是一个 int
类型的索引,也可以是一个 Index
类型的结构(Index
结构表示从序列结尾开始的索引)。同样,结束位置可以是一个 int
类型的索引,也可以是一个 Index
类型的结构。如果开始位置是省略的,则默认值为0;如果结束位置是省略的,则默认值为序列的长度。
范围还支持负数索引。例如,-3..
表示序列的后三个元素。
范围结构是一项非常实用的语言特性,可以让程序员更加简洁、直观地选取序列中的子集。虽然范围结构并不是一个复杂的概念,但它在某些情况下可以大大简化代码,提高程序可读性和可维护性。