Indicizzatori (Guida per programmatori C#)
Aggiornamento: novembre 2007
Gli indicizzatori consentono di indicizzare le istanze di una classe o di una struttura allo stesso modo delle matrici. Differiscono dalle proprietà solo per il fatto che le relative funzioni di accesso utilizzano i parametri.
Nell'esempio seguente viene definita una classe generica e vengono quindi aggiunti semplici metodi delle funzioni di accesso get e set per consentire l'assegnazione e il recupero dei valori. La classe Program crea un'istanza di questa classe per l'archiviazione delle stringhe.
class SampleCollection<T>
{
private T[] arr = new T[100];
public T this[int i]
{
get
{
return arr[i];
}
set
{
arr[i] = value;
}
}
}
// This class shows how client code uses the indexer
class Program
{
static void Main(string[] args)
{
SampleCollection<string> stringCollection = new SampleCollection<string>();
stringCollection[0] = "Hello, World";
System.Console.WriteLine(stringCollection[0]);
}
}
Cenni preliminari sugli indicizzatori
Gli indicizzatori consentono di eseguire l'indicizzazione degli oggetti in modo simile a quanto avviene per le matrici.
Una funzione di accesso get restituisce un valore. Una funzione di accesso set assegna un valore.
La parola chiave this viene utilizzata per definire gli indicizzatori.
La parola chiave value viene utilizzata per definire il valore assegnato dall'indicizzatore set.
Non è necessario che il valore assegnato dagli indicizzatori sia di tipo integer. Spetta al programmatore definire lo specifico meccanismo di ricerca.
È possibile eseguire l'overload degli indicizzatori.
Gli indicizzatori possono avere più parametri formali, ad esempio durante l'accesso a una matrice bidimensionale.
Sezioni correlate
Confronto tra proprietà e indicizzatori (Guida per programmatori C#)
Accessibilità asimmetrica delle funzioni di accesso (Guida per programmatori C#)
Specifiche del linguaggio C#
Per ulteriori informazioni, vedere le seguenti sezioni in Specifiche del linguaggio C#:
1.6.7.3 Indicizzatori
10.2.9.3 Nomi dei membri riservati per gli indicizzatori
10.9 Indicizzatori
13.2.4 Indicizzatori dell'interfaccia