Soweit ich weiß, fehlen in .NET 4.0 immer noch schreibgeschützte Listen. Warum fehlt dem Framework diese Funktionalität noch? Ist dies nicht eine der häufigsten Funktionen für domänengesteuertes Design ?
Einer der wenigen Vorteile, die Java gegenüber C # hat, ist die Methode Collections.unmodifiablelist (list) , die in IList <T> oder List <T> längst überfällig zu sein scheint.
Die Verwendung IEnumerable<T>
ist die einfachste Lösung für die Frage - ToList
kann verwendet werden und gibt eine Kopie zurück.
c#
java
.net
readonly-collection
Chris S.
quelle
quelle
List<T>
ist Ihre eigene zu schreiben, gibt es keine in der Klasse gebaut wird , dass ich an diesen Stützen wissen alle „nur lesen“ verfügt derList<T>
aus dem Kasten heraus wieContains
, LINQ - Abfragen etc.Antworten:
Sie suchen
ReadOnlyCollection
, was es seit .NET2 gibt.oder
Dies schafft eine schreibgeschützte Ansicht , die die eingewickelt Sammlung Änderungen widerspiegelt.
quelle
Für diejenigen, die Schnittstellen verwenden möchten: .NET 4.5 fügt die generische
IReadOnlyList
Schnittstelle hinzu, die beispielsweise von implementiert wirdList<T>
.Es ähnelt
IReadOnlyCollection
einerItem
Indexer-Eigenschaft und fügt diese hinzu .quelle
Wie wäre es mit der ReadOnlyCollection, die sich bereits im Framework befindet?
quelle
Wenn das häufigste Muster der Liste darin besteht, alle Elemente zu durchlaufen,
IEnumerable<T>
oderIQueryable<T>
wenn sie effektiv auch als schreibgeschützte Liste fungieren können.quelle
ToList()
, sondern nur eine KopieIEnumerable
kein vollständiger Satz von "schreibgeschützten" Methoden ist, zum Beispiel keine Methoden wieContains
.In 2.0 können Sie anrufen
AsReadOnly
, um eine schreibgeschützte Version der Liste zu erhalten. Oder wickeln Sie ein vorhandenesIList
in einReadOnlyCollection<T>
Objekt.quelle
Was ist los mit System.Collections.ObjectModel.ReadOnlyCollection ?
quelle