Una delle novità di C#8 è la nuova sintassi per la definizione di range.
Range range = 1..5; |
In questo modo viene creato un nuovo range che parte da 1 e arriva a 5, escluso. Un metodo alternativo per rappresentare l’indice precedente è quello di utilizzare, come ultimo elemento, l’offset a partire dall’ultimo elemento:
Range range = 1..^1; |
La keywork ^ consente di specificare l’offset a partire dall’ultimo elemento.
Il tipo Range può essere utilizzato come indice all’interno di array. Nell’esempio:
var array = new[] { 0, 1, 2, 3, 4, 5 }; var subArray = array[range]; // = { 1, 2, 3, 4 } |
il risultato che si ottiene è lo stesso utilizzando sia il primo tipo di dichiarazione, sia il secondo.
E’ possibile estrarre sotto-array a partire dall’ultimo valore:
var subArray = array[..^1]; // = { 0, 1, 2, 3, 4 } |
e allo stesso modo, partendo dal primo:
var subArray = array[1..]; // = { 1, 2, 3, 4, 5 } |
Un caso particolare è quello in cui viene estratto un solo elemento (utilizzando un unico indice):
var item = array[^1]; // = 5 |
L’utilizzo delle variabili Range non si limita solo all’interno di array. Ad essempio posso essere utilizzati anche all’interno di Span<T> introdotti in C# 7.1:
var array = new[] { 0, 1, 2, 3, 4, 5 }; var span = array.AsSpan(1, 4); // = { 1, 2, 3, 4 } var subSpan = span[1..^1]; // = { 2, 3 } |