Por lo que puedo decir, .NET 4.0 todavía carece de listas de solo lectura. ¿Por qué el marco todavía carece de esta funcionalidad? ¿No es esta una de las funciones más comunes para el diseño basado en dominios ?
Una de las pocas ventajas que tiene Java sobre C # es esta en la forma del método Collections.unmodifiablelist (list) , que parece estar muy atrasado en IList <T> o List <T>.
Usar IEnumerable<T>es la solución más fácil a la pregunta: ToListse puede usar y devuelve una copia.
c#
java
.net
readonly-collection
Chris S
fuente
fuente

List<T>es escribir la suya propia, no hay ninguna clase incorporada que yo sepa que admita todas las funciones de "solo lectura"List<T>de lasContainsconsultas LINQ, etc.Respuestas:
Está buscando
ReadOnlyCollection, que existe desde .NET2.o
Esto crea una vista de solo lectura , que refleja los cambios realizados en la colección envuelta.
fuente
Para aquellos a los que les gusta usar interfaces: .NET 4.5 agrega la
IReadOnlyListinterfaz genérica que se implementa porList<T>ejemplo.Es similar
IReadOnlyCollectiony agrega unaItempropiedad de indexación.fuente
¿Qué hay de ReadOnlyCollection ya dentro del marco?
fuente
Si el patrón más común de la lista es iterar a través de todos los elementos,
IEnumerable<T>o tambiénIQueryable<T>puede actuar efectivamente como una lista de solo lectura.fuente
ToList(), solo una copiaIEnumerableno es un conjunto completo de métodos de "solo lectura", por ejemplo, no contiene métodos comoContains.En 2.0, puede llamar
AsReadOnlypara obtener una versión de solo lectura de la lista. O envuelva un existenteIListen unReadOnlyCollection<T>objeto.fuente
¿Qué pasa con System.Collections.ObjectModel.ReadOnlyCollection ?
fuente