In C# 8 wurden zwei neue Operatoren eingeführt. Diese erlauben System.Index und System.Range Objekte zu erzeugen und Collections zur Laufzeit zu teilen.
"^" Hat Operator, nutzt den System.Index Type
".." System.Range, nutzt den System.Range Type
Mit ".." kann ein Bereich deklariert werden. Für offene Enden muss man keinen Index angeben. Sonst gibt man den Index ein, dabei kann der ^-Operator genutzt werden. Siehe Beispiele:
var fruits = new string[]
{
"Apfel",
"Birne",
"Orange",
"Banane",
"Ananas",
"Pfirsich"
};
var fruits1 = fruits[..2]; // Apfel, Birne und Orange (Alle Fruechte bis und mit Orange)
var fruits2 = fruits[2..3]; // Orange und Banane
var fruits3 = fruits[3..]; // Banane, Ananas und Pfirsich (Alle Fruechte ab Banane mit offenem Ende)
var fruits4 = fruits[2..^2]; // Orange, Banane und Ananas
Des Weiteren können Bereiche auch als Variablen deklariert werden:
Range pearToBanana = 1..3;
var pearToBananaArr = fruits[pearToBanana] // Birne, Orange und Banane
Weiterlesen: https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-8.0/ranges