Neměnné kolekce

Může být náročné udržet měnitelný stavu pod kontrolou v případě více vláken. Společný přístup je provádět pomocí nezměnitelné stavu, který může být předán volně mezi různé vlákna. Kolekce nezměnitelné se liší od kolekce jen pro čtení v tom smyslu, že na rozdíl od kolekce jen pro čtení, jejich nelze změnit pomocí zprostředkovatele nebo příjemce kolekce. Například pokud jsou vytváření výčtu kolekce jen pro čtení, existuje možnost, že v jiném vlákně, které způsobuje, že došlo k poškození dat lze změnit kolekci. Tento scénář nelze provést, pokud používáte nezměnitelné kolekce.

Nezměnitelné kolekce můžete:

  • Sdílejte kolekce tak, aby jeho příjemce můžete mít jistotu, že kolekce nezmění.

  • Zadejte bezpečnosti implicitní vlákna v vícevláknové aplikace (bez uzamčení vyžadovaných pro přístup kolekcí).

  • Postupujte podle funkční programovací postupů.

  • Změňte kolekci během výčtu současně zajistit, a nezmění původní kolekci.

Jsou podporovány nezměnitelné kolekce tříd, počínaje .NET Framework 4.5. Je použít k vytváření aplikací určených pro stolní počítače, Windows Store, Přenosná knihovna tříd, a Windows Phone 8.

Nezměnitelné třídy nejsou součástí základní knihovny tříd distribuované s rozhraním .NET Framework; jsou k dispozici prostřednictvím NuGet. Chcete-li nainstalovat tyto třídy:

  1. Otevřete svůj projekt v sadě Visual Studio a zvolte spravovat balíčky NuGet z projektu nabídky.

  2. V levém podokně vyberte položku Online.

  3. Volitelně můžete zvolit v poli z rozevíracího seznamu v prostředním podokně zahrnují předběžnou verzi namísto pouze stabilní. Tuto možnost bude vám umožní získat přístup k nové zkušební verze nezměnitelné tříd, jakmile budou k dispozici. (Chcete-li použít ImmutableArray je třeba zvolit zahrnují předběžnou verzi.)

  4. V pravém podokně pomocí vyhledávání pole, pokud chcete vyhledat Microsoft.Immutable.Collections balíčku (Microsoft.Bcl.Immutable).

  5. V prostředním podokně vyberte neměnitelný kolekce Microsoft, a poté zvolte možnost nainstalovat.

System.Collections.Immutable Obor názvů obsahuje typy obecné nezměnitelné kolekce, které můžete použít pro tyto situace, včetně:

  • ImmutableArray (zkušební verze)

  • [ T:System.Collections.Immutable.ImmutableDictionary`2 ]

  • [ T:System.Collections.Immutable.ImmutableSortedDictionary`2 ]

  • [ T:System.Collections.Immutable.ImmutableHashSet`1 ]

  • [ T:System.Collections.Immutable.ImmutableList`1 ]

  • [ T:System.Collections.Immutable.ImmutableQueue`1 ]

  • [ T:System.Collections.Immutable.ImmutableSortedSet`1 ]

  • [ T:System.Collections.Immutable.ImmutableStack`1 ]

Obor názvů obsahuje také mnoho podpůrných tříd. Například jednotlivých typů nezměnitelné kolekce obvykle má typ přidružené tvůrce, který umožňuje snadno a efektivně vytvářet a manipulovat kolekcí před provedením nezměnitelné. Podívejte se na téma System.Collections.Immutable obor názvů pro úplný seznam typů a odkazy na referenční obsah.

Zobrazit: