Die unveränderlichen Auflistungen

Wichtig

Dieses Thema wurde aktualisiert, und den aktualisierten Inhalt finden Sie im Artikel Unveränderliche Auflistungen.

Es kann schwierig sein, einen veränderlichen Zustand unter Kontrolle zu behalten, wenn mehrere Threads beteiligt sind. Ein üblicher Ansatz ist, den unveränderlichen Zustand zu verwenden, der frei zwischen verschiedenen Threads weitergegeben werden kann. Unveränderliche Auflistungen unterscheiden sich von schreibgeschützten Auflistungen darin, dass sie nicht vom Anbieter oder Consumer der Auflistung geändert werden können. Wenn Sie beispielsweise eine schreibgeschützte Auflistung in einer Enumeration verwenden, besteht die Möglichkeit, dass die Auflistung in einem anderen Thread geändert wird, was Datenbeschädigungen verursacht. Dieses Szenario kann nicht auftreten, wenn Sie eine unveränderliche Auflistung verwenden.

Mit unveränderlichen Auflistungen haben Sie folgende Möglichkeiten:

  • Freigeben einer Auflistung in einer Weise, dass für den Consumer sichergestellt ist, dass die Auflistung nie geändert werden kann

  • Bereitstellen impliziter Threadsicherheit in Multithreaded-Anwendungen (keine Sperren für den Zugriff auf Auflistungen erforderlich)

  • Einhalten funktionaler Programmierstile

  • Ändern einer Auflistung während der Enumeration, wobei sichergestellt wird, dass sich die ursprüngliche Auflistung nicht ändert

Die unveränderlichen Auflistungsklassen werden ab .NET Framework 4.5 unterstützt. Verwenden Sie sie, um Apps zu erstellen, die auf den Desktop, auf Windows Store, auf die Portable Klassenbibliothek und auf Windows Phone 8 abzielen.

So installieren Sie die unveränderlichen Auflistungen

Die unveränderlichen Klassen sind nicht Teil der Kernklassenbibliothek, die mit .NET Framework bereitgestellt wird; sie sind nur über NuGet verfügbar. So installieren Sie diese Klassen:

  1. Öffnen Sie Ihr Projekt in Visual Studio, und wählen Sie dann im Menü Projekt die Option NuGet-Pakete verwalten aus.

  2. Wählen Sie im linken Bereich Online aus.

  3. Wählen Sie optional im Dropdown-Listenfeld im mittleren Bereich statt Nur stabil die Option Vorabversion einschließen aus. Diese Option ermöglicht Ihnen den Zugriff auf neue Vorabversionen der unveränderlichen Klassen, sobald sie verfügbar sind. (Um ImmutableArray zu verwenden, müssen Sie Vorabversion einschließen auswählen.)

  4. Verwenden Sie im rechten Bereich das Feld Suchen, um das Paket Microsoft.Immutable.Collections (Microsoft.Bcl.Immutable) zu suchen.

  5. Wählen Sie im mittleren Bereich Microsoft Immutable Collections und wählen Sie dann Installieren aus.

Unveränderliche Klassen

Der System.Collections.Immutable-Namespace stellt generische Auflistungstypen zur Verfügung, die Sie für diese Szenarien verwenden können, darunter:

  • ImmutableArray (Vorabversion)

  • ImmutableDictionary

  • ImmutableSortedDictionary

  • ImmutableHashSet

  • ImmutableList

  • ImmutableQueue

  • ImmutableSortedSet

  • ImmutableStack

Der Namespace enthält außerdem viele unterstützende Klassen. In der Regel verfügt z. B. jeder unveränderliche Auflistungstyp über einen zugeordneten Generatortyp, mit dem Sie eine Auflistung einfach und effektiv erstellen und bearbeiten können, bevor Sie sie unveränderlich machen. Unter dem System.Collections.Immutable-Namespace finden Sie eine vollständige Liste mit Typen und Links auf Referenzinhalte.

Siehe auch

Konzepte

Generische Auflistungen in .NET Framework

Weitere Ressourcen

Auflistungen und Datenstrukturen