Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
.NET obsahuje řadu vzájemně propojených typů, které představují souvislou silně typovanou oblast paměti libovolné velikosti. Tyto typy jsou navržené tak, aby umožnily vytváření algoritmů, které se vyhýbají kopírování paměti nebo přidělování na spravované haldě více, než je nutné. Vytváření (buď prostřednictvím Slice, výraz AsSpan()kolekce nebo jejich konstruktory) nezahrnuje duplikování podkladových vyrovnávacích pamětí: jsou aktualizovány pouze relevantní odkazy a posuny, které představují "zobrazení" zabalené paměti. Ve vysoce výkonném kódu se rozsahy často používají k tomu, aby nedocházelo k zbytečnému přidělování řetězců.
Mezi tyto typy patří:
System.Span<T>– typ, který se používá pro přístup k souvislé oblasti paměti. Instanci Span<T> lze zálohovat polem typu
T, vyrovnávací pamětí přidělenou pomocí stackalloc, nebo ukazatelem na nespravovanou paměť. Protože musí být alokován na zásobníku, má řadu omezení. Například pole ve třídě nemůže být typu Span<T>, stejně tak nelze použít 'span' v asynchronních operacích.System.ReadOnlySpan<T>, neměnná verze Span<T> struktury. Instance lze také zálohovat pomocí String.
System.Memory<T>, obálka nad souvislou oblastí paměti. Instanci Memory<T> může zazálohovat pole typu
Tnebo správce paměti. Protože se dá uložit na spravované haldě, Memory<T> nemá žádná omezení Span<T>.System.ReadOnlyMemory<T>, neměnná verze Memory<T> struktury. Instance lze také zálohovat pomocí String.
System.Buffers.MemoryPool<T>, který přiděluje striktně typované bloky paměti z fondu paměti vlastníkovi. IMemoryOwner<T> instance lze pronajmout z fondu voláním MemoryPool<T>.Rent a poté uvolnit zpět do fondu voláním MemoryPool<T>.Dispose().
System.Buffers.IMemoryOwner<T>, který představuje vlastníka bloku paměti a řídí jeho správu životnosti.
MemoryManager<T>, abstraktní základní třída, kterou lze použít k implementaci Memory<T>, aby mohlo být Memory<T> podpořeno dalšími typy, jako jsou bezpečné popisovače. MemoryManager<T> je určený pro pokročilé scénáře.
ArraySegment<T>, obálka pro určitý počet prvků pole počínaje konkrétním indexem.
System.MemoryExtensions, kolekce rozšiřujících metod pro převod řetězců, polí a segmentů pole na Memory<T> bloky.
Pro více informací viz System.Buffers jmenný prostor.
Práce s pamětí a kapacitou
Vzhledem k tomu, že typy související s pamětí a rozsahem se obvykle používají k ukládání dat v zpracovatelském procesu, je důležité dodržovat sadu osvědčených postupů při použití Span<T> a Memory<T> souvisejících typů. Tyto osvědčené postupy jsou popsané v pokynech k používání paměti<T> a Span<T>.