📜  C#中的范围构造函数(1)

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

C# 中的范围构造函数

在C#8中,引入了一种新的运算符——范围运算符 ..,它可以代替 Substring 方法和使用索引操作符的代码。除此之外,我们可以使用 Range 构造函数来创建一个范围。

什么是范围

范围是一个表示一段序列(数组或列表)中元素的起始位置和终止位置的类型。范围可以用作索引器的参数来提取序列的子段。

范围有两种创建方式:使用范围运算符 .. 和使用 Range 构造函数。

使用范围运算符 ..

范围运算符 .. 的左侧是起始索引,右侧是终止索引,表示一个区间。如果省略左侧或右侧,则表示从序列的开头到末尾。

范围运算符示例:

int[] numbers = { 0, 1, 2, 3, 4, 5 };
var subArray = numbers[1..4]; // { 1, 2, 3 }
var lastTwo = numbers[^2..^0]; // { 4, 5 }

其中,第一个示例从索引 1 开始,到索引 4 指向之前的元素(也就是索引 3),截取了子数组 { 1, 2, 3 }。第二个示例使用索引运算符 ^^1 表示数组的倒数第二个元素,^0 表示数组最后一个元素,截取了 { 4, 5 } 子数组。

使用 Range 构造函数

范围运算符 .. 是由 Range 构造函数创建的。Range 构造函数接受两个参数:一个包含范围开始位置的整数和一个不包括结束位置的整数。范围边界的结束位置将是第二个参数加 1。

下面是使用 Range 构造函数的示例:

int[] numbers = { 0, 1, 2, 3, 4, 5 };
var subArray = numbers[new Range(1, 4)]; // { 1, 2, 3 }
var lastTwo = numbers[new Range(^2, ^0)]; // { 4, 5 }

第一个示例和使用范围运算符的示例类似,传递给构造函数的参数是 new Range(1, 4),表示从索引 1 开始,到索引 4 指向之前的元素(也就是索引 3)结束。第二个示例类似地使用了索引运算符 ^new Range(^2, ^0) 表示从倒数第二个元素开始,到最后一个元素结束。

结论

使用范围,在编写需要截取序列子段的代码时,与使用 Substring 方法和使用索引操作符相比,可以大大简化代码,使得代码更加易读易懂。