Kapitel 24. 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

Solltest du in einer API auf diese Typen stoßen und ihre potenziellen Leistungsvorteile nicht brauchen oder interessieren:

  • Gib ein Array ein, wenn du eine Methode aufrufst, die eine Span<T>, ReadOnlySpan<T>, Memory<T> oder ReadOnly​Memory<T> erwartet, also T[]. (Das funktioniert dank der impliziten Umwandlungsoperatoren.)

  • Rufe die ToArray Methode auf, um einen Span/Speicher in ein Array umzuwandeln. Wenn T char ist, wandelt ToString den Bereich/Speicher in einen String um.

Konkret tut ...

Get C# 8.0 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.