Il tipo Range e l'operatore ..
Estragga sezioni con le espressioni di intervallo.
Il tipo Range e l'operatore .. è una lezione C# Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C# Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C# Academy include 4 lezioni in totale.
Incontro con il tipo Range
System.Range descrive una porzione di una sequenza utilizzando un Index di inizio e uno di fine. Si abbina perfettamente all'operatore di intervallo .. per esprimere sottosequenze.
using System;
Range r = 1..3;
Console.WriteLine(r.Start + ".." + r.End); // 1..3L'operatore .. (intervallo)
L'operatore di intervallo a..b crea un Range dall'indice a (incluso) all'indice b (escluso). Pertanto, 1..3 comprende le posizioni 1 e 2.
using System;
int[] data = { 10, 20, 30, 40, 50 };
int[] slice = data[1..3];
Console.WriteLine(string.Join(",", slice)); // 20,30Inizio incluso, fine esclusa
La fine esclusa rispecchia il funzionamento dei cicli for: il numero di elementi è uguale a end - start. L'intervallo 2..5 restituisce tre elementi.
using System;
int[] data = { 0, 1, 2, 3, 4, 5, 6 };
int[] slice = data[2..5];
Console.WriteLine(slice.Length); // 3
Console.WriteLine(string.Join(",", slice)); // 2,3,4Intervalli aperti
Può omettere uno dei due estremi. ..3 significa "dall'inizio fino a 3", mentre 2.. significa "da 2 fino alla fine". Il solo .. copia l'intera sequenza.
using System;
int[] d = { 10, 20, 30, 40, 50 };
Console.WriteLine(string.Join(",", d[..3])); // 10,20,30
Console.WriteLine(string.Join(",", d[2..])); // 30,40,50
Console.WriteLine(string.Join(",", d[..])); // 10,20,30,40,50Intervalli con indici dalla fine
Combini .. con ^ per selezionare una porzione relativa alla fine. ^2.. significa "gli ultimi due elementi".
using System;
int[] d = { 1, 2, 3, 4, 5 };
Console.WriteLine(string.Join(",", d[^2..])); // 4,5
Console.WriteLine(string.Join(",", d[..^1])); // 1,2,3,4 (drop last)Range come valore memorizzato
Un Range è un valore a cui può assegnare un nome e che può riutilizzare con diverse raccolte che adottano la stessa convenzione per la lunghezza.
using System;
Range middle = 1..^1; // drop first and last
int[] a = { 0, 1, 2, 3, 4 };
Console.WriteLine(string.Join(",", a[middle])); // 1,2,3Range.GetOffsetAndLength
Per risolvere un intervallo rispetto a una lunghezza concreta, chiami GetOffsetAndLength(length). Il metodo restituisce l'offset iniziale e la lunghezza della porzione, gestendo per Lei gli indici dalla fine.
using System;
Range r = ^3..^1;
var (offset, length) = r.GetOffsetAndLength(5);
Console.WriteLine(offset + " " + length); // 2 2Range.All
Range.All statico equivale a .. e seleziona l'intera sequenza. È utile quando si passano intervalli come argomenti.
using System;
Range whole = Range.All;
int[] d = { 9, 8, 7 };
Console.WriteLine(string.Join(",", d[whole])); // 9,8,7Creare esplicitamente un Range
Oltre all'operatore, può chiamare il costruttore o i metodi factory Range.StartAt e Range.EndAt per maggiore chiarezza.
using System;
Range a = new Range(1, 3);
Range b = Range.StartAt(2);
Range c = Range.EndAt(2);
Console.WriteLine(a + " | " + b + " | " + c);Intervalli vuoti e non validi
Un intervallo in cui l'inizio coincide con la fine produce una porzione vuota. Un intervallo il cui inizio si trova oltre la fine, dopo la risoluzione, genera un'eccezione al momento della selezione.
using System;
int[] d = { 1, 2, 3, 4 };
Console.WriteLine(d[2..2].Length); // 0 (empty)
try { var _ = d[3..1]; }
catch (ArgumentOutOfRangeException) { Console.WriteLine("invalid range"); }Mettere tutto insieme
Gli intervalli rendono concise le operazioni su testo e array. Qui estraiamo una porzione centrale di un array senza alcun calcolo sugli indici.
using System;
int[] readings = { 5, 7, 9, 11, 13, 15 };
int[] window = readings[1..^1];
Console.WriteLine(string.Join(",", window)); // 7,9,11,13Verifica rapida
Si assicuri di comprendere la semantica dell'operatore di intervallo.
Riepilogo
Ha imparato che System.Range descrive una porzione con l'operatore ...
- L'inizio è incluso e la fine è esclusa: il conteggio è uguale a end - start.
- Gli estremi sono opzionali:
..3,2..,... ..si combina con^per selezionare porzioni dalla fine.GetOffsetAndLength(length)risolve un intervallo in numeri concreti.
Impara C# con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 93
- Lezioni
- 346
Domande Frequenti
La lezione «Il tipo Range e l'operatore ..» è gratuita?
Sì — il testo completo di «Il tipo Range e l'operatore ..» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C# Academy, passa a CoddyKit PRO. Il corso C# Academy include 4 lezioni in totale.
Cosa imparerò in «Il tipo Range e l'operatore ..»?
Estragga sezioni con le espressioni di intervallo. Eserciti C# Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare C# Academy?
Non è richiesta alcuna esperienza precedente. C# Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Il tipo Range e l'operatore ..»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione C# Academy?
Sì. Ogni lezione C# Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Il tipo Index e l'operatore ^
- Il tipo Range e l'operatore ..
- Intervalli con array e stringhe
- Tipi personalizzati che supportano gli intervalli