Kapitel 23. Span<T> und Speicher<T>

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Die Strukturen Span<T> und Memory<T> fungieren als Low-Level-Fassade für ein Array, einen String oder einen zusammenhängenden Block von verwaltetem oder nicht verwaltetem Speicher. Ihr Hauptzweck ist es, bei bestimmten Arten der Mikro-Optimierung zu helfen - insbesondere beim Schreiben von Code mit geringer Speicherbelegung, der die Zuweisung von verwaltetem Speicher minimiert (und damit die Belastung des Garbage Collectors verringert), ohne dass du deinen Code für verschiedene Arten von Eingaben duplizieren musst. Außerdem ermöglichen sie das Slicing - das Arbeitenmit einem Teil eines Arrays, Strings oder Speicherblocks, ohne eine Kopie zu erstellen.

Span<T> und Memory<T> sind besonders nützlich in Performance-Hotspots, wie der ASP.NET Core-Verarbeitungspipeline oder einem JSON-Parser, der eine Objektdatenbank bedient.

Hinweis

Wenn du in einer API auf diese Typen stößt und ihre potenziellen Leistungsvorteile nicht brauchst oder dich nicht dafür interessierst, kannst du ganz einfach wie folgt mit ihnen umgehen:

  • Wenn du eine Methode aufrufst, die ein Span<T>, ReadOnlySpan<T>, Memory<T> oder ReadOnlyMemory<T> erwartet, übergibst du stattdessen ein Array, also T[]. (Das funktioniert dank der impliziten Konvertierungsoperatoren.)

  • Um einen Span/Speicher in ein Array umzuwandeln, rufst du die Methode ToArray auf. Und ...

Get C# 12 in einer Kurzfassung now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.