Il tipo Index e l'operatore ^
Faccia riferimento agli elementi a partire dalla fine di una raccolta.
Il tipo Index e l'operatore ^ è una lezione C# Academy gratuita su CoddyKit. Questa è la lezione 1 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 Index
C# mette a disposizione il tipo dedicato System.Index per descrivere una posizione all'interno di una sequenza. A differenza di un semplice int, un Index può rappresentare una posizione conteggiata dalla fine di una raccolta, non soltanto dall'inizio.
In questo modo, espressioni come "restituisca l'ultimo elemento" diventano chiare e sicure.
using System;
int[] numbers = { 10, 20, 30, 40, 50 };
Index first = 0;
Console.WriteLine(numbers[first]); // 10L'operatore ^ (dalla fine)
L'operatore a forma di accento circonflesso ^ crea un Index che conta dalla fine. ^1 indica l'ultimo elemento, ^2 il penultimo e così via.
Noti che ^1 è l'ultimo indice valido, mentre ^0 equivale a Length e si trova una posizione oltre la fine.
using System;
int[] numbers = { 10, 20, 30, 40, 50 };
Console.WriteLine(numbers[^1]); // 50 (last)
Console.WriteLine(numbers[^2]); // 40Index come valore di prima classe
Un Index è un valore reale che può memorizzare in una variabile, passare ai metodi e riutilizzare. In questo modo la posizione viene separata dalla raccolta.
using System;
int[] data = { 1, 2, 3, 4, 5 };
Index last = ^1;
Index secondLast = ^2;
Console.WriteLine(data[last]); // 5
Console.WriteLine(data[secondLast]); // 4IsFromEnd e Value
Ogni Index espone due proprietà: Value (l'offset intero) e IsFromEnd (indica se è stato creato con ^).
using System;
Index fromStart = 2;
Index fromEnd = ^2;
Console.WriteLine(fromStart.Value + " " + fromStart.IsFromEnd); // 2 False
Console.WriteLine(fromEnd.Value + " " + fromEnd.IsFromEnd); // 2 TrueGetOffset risolve la posizione
Un indice dalla fine ha significato solo dopo aver determinato la lunghezza della raccolta. Index.GetOffset(length) lo converte in un offset concreto a base zero.
using System;
Index fromEnd = ^1;
int length = 5;
int offset = fromEnd.GetOffset(length);
Console.WriteLine(offset); // 4^0 è una posizione oltre la fine
Poiché ^0 viene risolto in Length, utilizzarlo per indicizzare genera un'eccezione. È utile soltanto come limite superiore esclusivo di un intervallo, come vedrà nella lezione successiva.
using System;
int[] data = { 1, 2, 3 };
try {
Console.WriteLine(data[^0]); // out of range!
} catch (IndexOutOfRangeException) {
Console.WriteLine("^0 is past the end");
}Index funziona con molte raccolte
Qualsiasi tipo dotato di un indicizzatore e di una proprietà Length o Count (oltre al supporto appropriato) può utilizzare Index. Array, string e Span<T> funzionano immediatamente.
using System;
string word = "Coddy";
Console.WriteLine(word[^1]); // y
Console.WriteLine(word[^5]); // CCalcolo dinamico degli indici
Può creare un Index da un intero determinato a runtime utilizzando l'operatore ^ su una variabile.
using System;
int[] data = { 5, 10, 15, 20 };
int n = 2;
Index idx = ^n; // ^ works on variables too
Console.WriteLine(data[idx]); // 15Index e il semplice int
Un semplice int conta sempre dall'inizio. Index aggiunge la possibilità di contare dalla fine, continuando a supportare la conversione implicita da int, così il codice esistente continua a funzionare.
using System;
Index a = 1; // implicit from int
Index b = ^1; // from end
Console.WriteLine(a.IsFromEnd); // False
Console.WriteLine(b.IsFromEnd); // TrueEvitare gli errori di indice di uno
Per raggiungere l'ultimo elemento si utilizzava arr[arr.Length - 1]. Con ^1 l'intento è esplicito e non c'è alcun calcolo aritmetico che possa contenere errori.
using System;
int[] scores = { 88, 92, 79, 95 };
Console.WriteLine(scores[scores.Length - 1]); // old way: 95
Console.WriteLine(scores[^1]); // new way: 95Index nel codice reale
Ecco un piccolo helper che restituisce l'ultimo elemento di qualsiasi array utilizzando ^1, mantenendo pulito il punto di chiamata.
using System;
static T Last<T>(T[] items) => items[^1];
int[] nums = { 3, 6, 9, 12 };
Console.WriteLine(Last(nums)); // 12Verifica rapida
Verifichi la sua comprensione del tipo Index e dell'operatore ^.
Riepilogo
Ha imparato che System.Index rappresenta una posizione che può essere conteggiata dall'inizio o, con l'operatore ^, dalla fine.
^1indica l'ultimo elemento;^0equivale aLength(una posizione oltre la fine).Indexdispone diValue,IsFromEndeGetOffset(length).- Supporta la conversione implicita da
inte funziona con array, stringhe e span.
Domande Frequenti
La lezione «Il tipo Index e l'operatore ^» è gratuita?
Sì — il testo completo di «Il tipo Index 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 Index e l'operatore ^»?
Faccia riferimento agli elementi a partire dalla fine di una raccolta. 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 1 di 4.
Quanto tempo richiede la lezione «Il tipo Index 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