Indexer in C#



Gli Indexer permettono di accedere ad un oggetto come se fosse un array.

La loro sintassi è simile a quella di una proprietà di una classe, tranne che per l’uso della parola chiave this.

Per il resto, infatti, un indexer viene costruito allo stesso modo di una proprietà, vediamo un esempio:

class MyList
{
private int[] values;
public MyList()
{
//Imposta la grandezza della lista a 10
values = new int[10];
}
public int this[int index]
{
get
{
return values[index];
}
set
{
values[index] = value;
}
}
}

Questa semplice classe MyList simula una lista ed usa un indexer.

Nella parte get ritorna il valore della lista all’indice specificato dell’array, nel set imposta l’array interno al valore specificato che all’interno del set è dato dalla parola chiave value.

Ovviamente quello di sopra è solamente un esempio ed è utile per mostrare solo la funzionalità degli indexer, le potenzialità di questi ultimi, infatti, è molto elevata.

Basti pensare che all’interno sia del get che del set si possono fare dei controlli per verificare se l’indice scelto è maggiore di 0 e minore di 10, in modo che non ci siano errori durante la scrittura nell’array, tutto questo in modo completamente astratto, infatti quando poi si andrà ad utilizzare la classe si potrà gestirla in modo efficace:

static void Main(string[] args)
{
MyList list = new MyList();
list[5] = 456;
list[2] = 284;
list[7] = 123;
Console.WriteLine(list[5]); // ==> 456
}

Annunci sponsorizzati:
Condividi su Facebook Condividi su Twitter!
Pinterest