ExpertiDict

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

ArrayPool

/əˈreɪ pul/substantivo

Pool compartilhado de arrays reutilizáveis (ArrayPool<T>.Shared). Você aluga um buffer com Rent e o devolve com Return, evitando alocar arrays grandes repetidamente.

Onde usar

Aparece em código de rede e parsing que precisa de buffers temporários grandes sem pressionar o GC. O array alugado pode ser maior que o pedido e vir com lixo, então use apenas o tamanho que você pediu.

Em código

using System.Buffers;

var pool = ArrayPool<byte>.Shared;
byte[] buf = pool.Rent(1024);
try { Console.WriteLine(buf.Length >= 1024); }
finally { pool.Return(buf); }

Exemplos

Rent the buffer from the ArrayPool and return it in finally.

Alugue o buffer do ArrayPool e devolva no finally.

The rented array can be larger than requested.

O array alugado pode ser maior que o pedido.

Cuidado

Não esqueça de devolver com Return (use try/finally) nem use o array depois de devolvido: outro código pode recebê-lo.

Veja também

Todos os termos de C#