Класс ArrayPool
ArrayPool<T> хранит
буферы для повторного использования.
Общий экземпляр -
Shared.
Взять массив -
Rent,
вернуть -
Return.
Пространство имён
System.Buffers.
Синтаксис
using System.Buffers;
ArrayPool<int> pool = ArrayPool<int>.Shared;
int[] buffer = pool.Rent(minimumLength);
Пример
Давайте одолжить массив из общего пула:
using System;
using System.Buffers;
class Program
{
static void Main()
{
var pool = ArrayPool<int>.Shared;
int[] buffer = pool.Rent(3);
bool res = buffer.Length >= 3;
Console.WriteLine(res);
pool.Return(buffer);
}
}
Результат выполнения кода:
True
Пример
Давайте записать своё значение и прочитать его:
using System;
using System.Buffers;
class Program
{
static void Main()
{
var pool = ArrayPool<int>.Shared;
int[] buffer = pool.Rent(3);
buffer[0] = 12345;
int res = buffer[0];
Console.WriteLine(res);
pool.Return(buffer);
}
}
Результат выполнения кода:
12345
Пример
Давайте вернуть массив после работы:
using System;
using System.Buffers;
class Program
{
static void Main()
{
var pool = ArrayPool<int>.Shared;
int[] buffer = pool.Rent(3);
buffer[0] = 1;
pool.Return(buffer, clearArray: true);
Console.WriteLine("abcde");
}
}
Результат выполнения кода:
"abcde"