Capítulo 23. 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, puedes tratarlos fácilmente de la siguiente manera:

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

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

Concretamente, Span<T> hace dos cosas:

  • Proporciona ...

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