Indicizzatori (Guida per programmatori C#)

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>
{
    // Declare an array to store the data elements.
    private T[] arr = new T[100];

    // Define the indexer, which will allow client code
    // to use [] notation on the class instance itself.
    // (See line 2 of code in Main below.)        
    public T this[int i]
    {
        get
        {
            // This indexer is very simple, and just returns or sets
            // the corresponding element from the internal array.
            return arr[i];
        }
        set
        {
            arr[i] = value;
        }
    }
}

// This class shows how client code uses the indexer.
class Program
{
    static void Main(string[] args)
    {
        // Declare an instance of the SampleCollection type.
        SampleCollection<string> stringCollection = new SampleCollection<string>();

        // Use [] notation on the type.
        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

Specifiche del linguaggio C#

Per ulteriori informazioni, vedere la Specifiche del linguaggio C#. La specifica del linguaggio è la fonte ufficiale per la sintassi e l'utilizzo di C#.

Vedere anche

Riferimenti

Proprietà (Guida per programmatori C#)

Concetti

Guida per programmatori C#