Il linguaggio C# permette di creare delle proprietà di una classe particolari, queste vengono chiamate proprietà indexed default. L’idea è poter fare una cosa del genere:
Come si vede dall’esempio indicato sopra, voglio poter accedere ad una classe come se fosse una specie di array, anche se ovviamente questo non è.
Spesso questo comportamento viene implementato quando la classe interna ha effettivamente una List
o un Dictionary
come proprietà e creo questo modo comodo per potervi accedere.
Proseguiamo la spiegazione con un esempio, preso da questo link.
Assumiamo di avere un oggetto Club con al suo interno una List di oggetti Person, ed inoltre ha una default indexer property per poter accedere a tale lista
In questo modo posso correttamente scrivere il seguente codice:
Come per ogni altro metodo di una classe, anche queste particolari proprietà possono subire un overload, posso quindi avere un accesso tramite indice con un intero e anche con una stringa, la quale potrebbe fare, per esempio, un dictionary lookup.