Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
.NET bevat een aantal onderling gerelateerde typen die een aaneengesloten, sterk getypte regio van willekeurig geheugen vertegenwoordigen. Deze typen zijn ontworpen voor het creëren van algoritmen die het kopiëren van geheugen of het toewijzen op de beheerde heap voorkomen meer dan noodzakelijk. Als u ze maakt (via Slice, een AsSpan()verzamelingsexpressie of hun constructors), worden de onderliggende buffers niet gedupliceerd: alleen de relevante verwijzingen en offsets, die de weergave van het verpakte geheugen vertegenwoordigen, worden bijgewerkt. In code met hoge prestaties worden spans vaak gebruikt om te voorkomen dat tekenreeksen onnodig worden toegewezen.
De typen zijn onder andere:
System.Span<T>, een type dat wordt gebruikt voor toegang tot een aaneengesloten geheugengebied. Een Span<T> exemplaar kan worden ondersteund door een matrix van het type
T, een buffer die is toegewezen met stackalloc of een aanwijzer naar onbeheerd geheugen. Omdat het moet worden toegewezen aan de stack, heeft het een aantal beperkingen. Een veld in een klasse kan bijvoorbeeld niet van het type Span<T>zijn en kan evenmin worden gebruikt in asynchrone bewerkingen.System.ReadOnlySpan<T>, een onveranderbare versie van de Span<T> structuur. Instanties kunnen ook worden ondersteund door een String.
System.Memory<T>, een wrapper over een aaneengesloten regio van het geheugen. Een Memory<T> exemplaar kan worden ondersteund door een matrix van het type
Tof een geheugenbeheerder. Omdat het kan worden opgeslagen op de beheerde heap, Memory<T> heeft geen van de beperkingen van Span<T>.System.ReadOnlyMemory<T>, een onveranderbare versie van de Memory<T> structuur. Instanties kunnen ook worden ondersteund door een String.
System.Buffers.MemoryPool<T>, een systeem dat sterk getypte blokken van een geheugenpool aan een eigenaar toewijst. IMemoryOwner<T> exemplaren kunnen worden gehuurd vanuit de pool door aan te roepen MemoryPool<T>.Rent en teruggestuurd naar de pool door aan te roepen MemoryPool<T>.Dispose().
System.Buffers.IMemoryOwner<T>, die de eigenaar van een blok geheugen vertegenwoordigt en het levensduurbeheer beheert.
MemoryManager<T>, een abstracte basisklasse die kan worden gebruikt om de implementatie Memory<T> te vervangen, zodat Memory<T> deze kan worden ondersteund door extra typen, zoals veilige ingangen. MemoryManager<T> is bedoeld voor geavanceerde scenario's.
ArraySegment<T>, een wrapper voor een bepaald aantal matrixelementen die beginnen bij een bepaalde index.
System.MemoryExtensions, een verzameling uitbreidingsmethoden voor het converteren van tekenreeksen, matrices en matrixsegmenten naar Memory<T> blokken.
Zie de System.Buffers naamruimte voor meer informatie.
Werken met geheugen en span
Omdat de geheugengerelateerde en spangerelateerde typen doorgaans worden gebruikt voor het opslaan van gegevens in een verwerkingspijplijn, is het belangrijk dat u een set aanbevolen procedures volgt bij het gebruik Span<T>van , Memory<T>en gerelateerde typen. Deze aanbevolen procedures worden beschreven in de richtlijnen voor geheugen-T<>- en Span<T-gebruik>.