Oharra
Orrialde honetara sartzeak baimena behar du. Saioa hasteko edo direktorioak aldatzen saia zaitezke.
Orrialde honetara sartzeak baimena behar du. Direktorioak aldatzen saia zaitezke.
.NET incluye una serie de tipos interrelacionados que representan una región contigua y fuertemente tipada de memoria arbitraria. Estos tipos están diseñados para permitir la creación de algoritmos que eviten copiar memoria o asignar en el montón administrado más de lo necesario. Crearlos (ya sea a través de Slice, AsSpan(), una expresión de colección o sus constructores) no implica duplicar los búferes subyacentes: solo se actualizan las referencias y desplazamientos pertinentes, que representan la "vista" de la memoria encapsulada. En el código de alto rendimiento, los intervalos se suelen usar para evitar asignar cadenas innecesariamente.
Los tipos incluyen:
System.Span<T>, un tipo que se usa para acceder a una región contigua de memoria. Una Span<T> instancia puede ser respaldada por una matriz de tipo
T, un búfer asignado con stackalloc o un puntero a la memoria no administrada. Como debe asignarse en la pila, tiene una serie de restricciones. Por ejemplo, un campo de una clase no puede ser de tipo Span<T>, ni se puede usar span en operaciones asincrónicas.System.ReadOnlySpan<T>, una versión inmutable de la Span<T> estructura. Las instancias también pueden estar respaldadas por String.
System.Memory<T>, un contenedor en un área de memoria contigua. Una Memory<T> instancia puede estar respaldada por una matriz de tipo
To un administrador de memoria. Como se puede almacenar en el montón administrado, Memory<T> no tiene ninguna de las limitaciones de Span<T>.System.ReadOnlyMemory<T>, una versión inmutable de la Memory<T> estructura. Las instancias también pueden estar respaldadas por String.
System.Buffers.MemoryPool<T>, que asigna bloques de memoria fuertemente tipados de un grupo de memoria a un propietario. Se pueden alquilar instancias de IMemoryOwner<T> del grupo mediante la llamada a MemoryPool<T>.Rent y liberarse de nuevo en el grupo mediante la llamada a MemoryPool<T>.Dispose().
System.Buffers.IMemoryOwner<T>, que representa al propietario de un bloque de memoria y controla la gestión de su ciclo de vida.
MemoryManager<T>, una clase base abstracta que se puede usar para reemplazar la implementación de Memory<T> para que Memory<T> pueda ser respaldada por tipos adicionales, como identificadores seguros. MemoryManager<T> está pensado para escenarios avanzados.
ArraySegment<T>, un contenedor para un número determinado de elementos de matriz que comienzan en un índice determinado.
System.MemoryExtensions, una colección de métodos de extensión para convertir cadenas, matrices y segmentos de matriz en Memory<T> bloques.
Para obtener más información, vea el espacio de nombres System.Buffers.
Uso de memoria e intervalo
Dado que los tipos relacionados con la memoria y los relacionados con intervalos se usan normalmente para almacenar datos en una canalización de procesamiento, es importante seguir un conjunto de procedimientos recomendados al usar Span<T>, Memory<T>y tipos relacionados. Estos procedimientos recomendados se documentan en las guías de uso de Memory T y Span T.