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: ToList
se 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 lasContains
consultas 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
IReadOnlyList
interfaz genérica que se implementa porList<T>
ejemplo.Es similar
IReadOnlyCollection
y agrega unaItem
propiedad 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 copiaIEnumerable
no es un conjunto completo de métodos de "solo lectura", por ejemplo, no contiene métodos comoContains
.En 2.0, puede llamar
AsReadOnly
para obtener una versión de solo lectura de la lista. O envuelva un existenteIList
en unReadOnlyCollection<T>
objeto.fuente
¿Qué pasa con System.Collections.ObjectModel.ReadOnlyCollection ?
fuente