Capítulo 24. Extensión<T> y Memoria<T>

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

Las estructuras Span<T> y Memory<T> actúan como fachadas de bajo nivel sobre una matriz, cadena o cualquier bloque contiguo de memoria gestionada o no gestionada. Su propósito principal es ayudar con ciertos tipos de micro-optimización, en particular, escribir código de baja asignación que minimice las asignaciones de memoria gestionada (reduciendo así la carga del recolector de basura), sin tener que duplicar tu código para diferentes tipos de entrada. También permiten el troceado, es decir,trabajar con una parte de una matriz, cadena o bloque de memoria sin crear una copia.

Span<T> y Memory<T> son especialmente útiles en puntos conflictivos de rendimiento, como el canal de procesamiento de ASP.NET Core, o un analizador JSON que sirve a una base de datos de objetos.

Nota

Si te encuentras con estos tipos en una API y no necesitas ni te interesan sus posibles ventajas de rendimiento:

  • Pasa una matriz cuando llames a un método que espere un Span<T>, ReadOnlySpan<T>, Memory<T> o ReadOnly​Memory<T> en su lugar; es decir, T[]. (Esto funciona gracias a los operadores de conversión implícitos.)

  • Llama al método ToArray para convertir un span/memoria en una matriz. Y si T es char, ToString convertirá el span/memoria en una cadena.

Concretamente, Span<T> hace dos cosas:

  • Proporciona una interfaz común tipo array sobre arrays gestionados, ...

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