Pelo que posso dizer, o .NET 4.0 ainda carece de listas somente leitura. Por que o framework ainda carece dessa funcionalidade? Não é esta uma das peças mais comuns de funcionalidade para design orientado a domínio ?
Uma das poucas vantagens do Java sobre o C # é na forma do método Collections.unmodifiablelist (list) , que parece estar muito atrasado em IList <T> ou List <T>.
Usar IEnumerable<T>
é a solução mais fácil para a questão - ToList
pode ser usado e devolve uma cópia.
c#
java
.net
readonly-collection
Chris S
fonte
fonte
List<T>
é escrever o seu. Não há nenhuma classe interna que eu conheça que ofereça suporte a todos os recursos "somente leitura" prontosList<T>
para usoContains
, como consultas LINQ etc.Respostas:
Você está procurando
ReadOnlyCollection
, que existe desde .NET2.ou
Isso cria uma visualização somente leitura , que reflete as alterações feitas na coleção agrupada.
fonte
Para quem gosta de usar interfaces: .NET 4.5 adiciona a
IReadOnlyList
interface genérica que é implementada por,List<T>
por exemplo.É semelhante
IReadOnlyCollection
e adiciona umaItem
propriedade do indexador.fonte
Que tal ReadOnlyCollection já dentro da estrutura?
fonte
Se o padrão mais comum da lista é iterar por todos os elementos,
IEnumerable<T>
ouIQueryable<T>
pode atuar efetivamente como uma lista somente leitura também.fonte
ToList()
também, apenas uma cópiaIEnumerable
não é um conjunto completo de métodos "somente leitura", por exemplo, não contém métodos comoContains
.No 2.0, você pode ligar
AsReadOnly
para obter uma versão somente leitura da lista. Ou envolva um existenteIList
em umReadOnlyCollection<T>
objeto.fonte
O que há de errado com System.Collections.ObjectModel.ReadOnlyCollection ?
fonte