c# java .net readonlycollection

c# - Lista de solo lectura o lista no modificable en.NET 4.0



java readonlycollection (6)

Por lo que puedo decir, .NET 4.0 todavía carece de listas de solo lectura. ¿Por qué el marco aún carece de esta funcionalidad? ¿No es esta una de las piezas de funcionalidad más comunes para el diseño impulsado por el dominio ?

Una de las pocas ventajas que tiene Java sobre C # es esta en la forma del método Collections.unmodifiablelist(list) , que parece que hace mucho tiempo que estaba pendiente en IList <T> o List <T>.

Usar IEnumerable<T> es la solución más sencilla a la pregunta: ToList se puede usar y devuelve una copia.


¿Qué hay de ReadOnlyCollection ya dentro del marco?



En 2.0, puede llamar a AsReadOnly para obtener una versión de solo lectura de la lista. O envuelva un IList existente en un objeto ReadOnlyCollection.


Está buscando ReadOnlyCollection , que ha estado presente desde .NET2.

IList<string> foo = ...; // ... ReadOnlyCollection<string> bar = new ReadOnlyCollection<string>(foo);

o

List<string> foo = ...; // ... ReadOnlyCollection<string> bar = foo.AsReadOnly();

Esto crea una vista de solo lectura, que refleja los cambios realizados en la colección empaquetada.


Para aquellos que les gusta usar interfaces: .NET 4.5 agrega la interfaz genérica IReadOnlyList implementada por List<T> por ejemplo.

Es similar a IReadOnlyCollection y agrega una propiedad de indexador de Item .


Si el patrón más común de la lista es iterar a través de todos los elementos, IEnumerable o IQueryable también pueden actuar como una lista de solo lectura.