C# Academy · Lezione

Il tipo Range e l'operatore ..

Estragga sezioni con le espressioni di intervallo.

Lezione 2 di 413 passaggi

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..3

L'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,30

Inizio 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,4

Intervalli 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,50

Intervalli 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,3

Range.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 2

Range.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,7

Creare 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,13

Verifica 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.
Gratis per iniziare

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

  1. Il tipo Index e l'operatore ^
  2. Il tipo Range e l'operatore ..
  3. Intervalli con array e stringhe
  4. Tipi personalizzati che supportano gli intervalli
← Torna a C# Academy