D'après ce que je peux dire, .NET 4.0 manque toujours de listes en lecture seule. Pourquoi le framework manque-t-il toujours de cette fonctionnalité? N'est-ce pas l'une des fonctionnalités les plus courantes pour la conception axée sur le domaine ?
L'un des rares avantages de Java sur C # est celui-ci sous la forme de la méthode Collections.unmodifiablelist (list) , qui semble être attendue depuis longtemps dans IList <T> ou List <T>.
L'utilisation IEnumerable<T>
est la solution la plus simple à la question - ToList
peut être utilisée et renvoie une copie.
c#
java
.net
readonly-collection
Chris S
la source
la source
List<T>
est d'écrire la vôtre, il n'y a pas de classe intégrée que je connaisse qui prend en charge toutes les fonctionnalités «lecture seule» prêtesList<T>
à l'emploi comme lesContains
requêtes LINQ, etc.Réponses:
Vous recherchez
ReadOnlyCollection
, qui existe depuis .NET2.ou
Cela crée une lecture seule vue , ce qui reflète les modifications apportées à la collection enveloppée.
la source
Pour ceux qui aiment utiliser les interfaces: .NET 4.5 ajoute l'
IReadOnlyList
interface générique qui est implémentée parList<T>
exemple par.Il est similaire à
IReadOnlyCollection
et ajoute uneItem
propriété d'indexeur.la source
Que diriez-vous de ReadOnlyCollection déjà dans le cadre?
la source
Si le modèle le plus courant de la liste consiste à parcourir tous les éléments
IEnumerable<T>
ouIQueryable<T>
peut également agir comme une liste en lecture seule.la source
ToList()
non plus, juste une copieIEnumerable
n'est pas un ensemble complet de méthodes "en lecture seule", par exemple il ne contient pas de méthodes commeContains
.Dans la version 2.0, vous pouvez appeler
AsReadOnly
pour obtenir une version en lecture seule de la liste. Ou enveloppez un existantIList
dans unReadOnlyCollection<T>
objet.la source
Quel est le problème avec System.Collections.ObjectModel.ReadOnlyCollection ?
la source