Они используются для индексации и нарезки.Из блога Microsoft :
Индексация:
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"
Диапазон (нарезка):
Мы также вводим тип диапазона,который состоит из двух индексов, одного для начала и одного для конца, и может быть записан с помощью выражения диапазона x..y.Затем вы можете индексировать с помощью Range, чтобы получить срез:
var slice = a[i1..i2]; // { 3, 4, 5 }
Вы можете использовать их в типах Array
, String
, [ReadOnly]Span
и [ReadOnly]Memory
, так что выесть другой способ сделать подстроки:
string input = "This a test of Ranges!";
string output = input[^7..^1];
Console.WriteLine(output); //Output: Ranges
Вы также можете опустить первый или последний индекс диапазона:
output = input[^7..]; //Equivalent of input[^7..^0]
Console.WriteLine(output); //Output: Ranges!
output = input[..^1]; //Equivalent of input[0..^1]
Console.WriteLine(output); //Output: This a test of Ranges
Вы также можете сохранить диапазоны в переменных и использовать их позже:
Range r = 0..^1;
output = input[r];
Console.WriteLine(output);