ExpertiDict

C# · Avançado · Inglês · Técnico

Memory

/ˈmɛməri/substantivo

Memory<T> é o equivalente do Span<T> que pode morar no heap: serve como campo de classe e atravessa awaits, expondo a propriedade Span para acessar os dados.

Onde usar

Aparece em APIs assíncronas de I/O, como Stream.ReadAsync(Memory<byte>), onde um Span não poderia ser usado. Você converte para Span dentro do trecho síncrono que processa os bytes.

Em código

byte[] fonte = { 1, 2, 3 };
using var ms = new MemoryStream(fonte);
Memory<byte> m = new byte[8];
int n = await ms.ReadAsync(m);
Console.WriteLine(n); // 3
m.Span[0] = 7;

Exemplos

Use Memory here because we cross an await.

Use Memory aqui porque atravessamos um await.

Get the Span from the Memory inside the sync part.

Pegue o Span do Memory no trecho síncrono.

Cuidado

Não use Memory onde Span bastaria: ele é maior e mais lento de acessar, e só compensa quando o dado precisa sair da stack.

Sinônimos

Memory<T>

Veja também

Todos os termos de C#