csharp-range

in C#, Informatica

C# 8.0 – Range e Indici

Reading Time: < 1 minute

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 }