📜  C#8.0中的范围结构(1)

📅  最后修改于: 2023-12-03 15:00:14.277000             🧑  作者: Mango

C# 8.0中的范围结构

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.. 表示序列的后三个元素。

总结

范围结构是一项非常实用的语言特性,可以让程序员更加简洁、直观地选取序列中的子集。虽然范围结构并不是一个复杂的概念,但它在某些情况下可以大大简化代码,提高程序可读性和可维护性。

参考资料