从C#8.0 / .Net Core 3.0开始
将支持数组切片,Index
并Range
添加新类型。
范围结构文档
索引结构文档
Index i1 = 3; // number 3 from beginning
Index i2 = ^4; // number 4 from end
int[] a = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
Console.WriteLine($"{a[i1]}, {a[i2]}"); // "3, 6"
var slice = a[i1..i2]; // { 3, 4, 5 }
上面的代码示例摘自C#8.0 博客。
请注意,^
前缀表示从数组末尾开始计数。如docs示例所示
var words = new string[]
{
// index from start index from end
"The", // 0 ^9
"quick", // 1 ^8
"brown", // 2 ^7
"fox", // 3 ^6
"jumped", // 4 ^5
"over", // 5 ^4
"the", // 6 ^3
"lazy", // 7 ^2
"dog" // 8 ^1
}; // 9 (or words.Length) ^0
Range
并且Index
还可以在切片数组之外工作,例如使用循环
Range range = 1..4;
foreach (var name in names[range])
将遍历条目1至4
请注意,在编写此答案时,C#8.0尚未正式发布
C#8.x和.Net Core 3.x现在在Visual Studio 2019及更高版本中可用