Programming Languages Hacks

Importanti regole per linguaggi di programmazione rilevanti come Java, C, C++, C#…

  • Subscribe

  • Lettori

    I miei lettori abituali

  • Twitter

Collezioni di Sola Lettura (Read-Only) in .NET

Posted by Ricibald on February 7th, 2008

Per utilizzare collezioni readonly bisognerebbe utilizzare il metodo:

List<T>.AsReadOnly()

Avvolge la lista in modo da impedirne la modifica. Ha complessità O(1). Quindi non esegue una copia della lista, ma rende la lista puntata read-only.
Un utilizzo pratico è quindi:

class Universita
{
private IList<Studente> _studenti = new List<Studente>();

public IList<Studente> Studenti
{
get
{
return _studenti.AsReadOnly();
}
}

public void AddStudente(Studente studente) {
_studenti.Add(studente);
}
}

Risulta quindi modificabile dentro la classe, ma non modificabile per i clienti della classe. Attenzione però: per non modificabile si intende che la collezione non può essere modificata, ma le proprietà dei suoi elementi invece potrebbero essere modificate (il nome di uno studente potrebbe essere modificato).

Per questo la visibilità delle proprietà “set” deve essere opportunamente progettata, in modo che la classe Università non veda i metodi per impostare le proprietà di Studente.

Leave a Reply

You must be logged in to post a comment.