Метод Return
После
Return массив не читают.
Повторный
Return того же буфера
ломает пул - так в примерах не
делают. С
clearArray: true элементы
обнуляют до повторной выдачи.
Взять буфер -
Rent.
Синтаксис
using System.Buffers;
ArrayPool<int>.Shared.Return(buffer);
ArrayPool<int>.Shared.Return(buffer, clearArray: true);
Пример
Давайте вернуть массив с очисткой:
using System;
using System.Buffers;
class Program
{
static void Main()
{
var pool = ArrayPool<int>.Shared;
int[] buffer = pool.Rent(3);
buffer[0] = 99;
pool.Return(buffer, clearArray: true);
Console.WriteLine("abcde");
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте вернуть массив без очистки:
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);
Console.WriteLine("abcde");
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте снова одолжить массив после
Return:
using System;
using System.Buffers;
class Program
{
static void Main()
{
var pool = ArrayPool<int>.Shared;
int[] buffer = pool.Rent(3);
pool.Return(buffer, clearArray: true);
int[] again = pool.Rent(3);
again[0] = 2;
int res = again[0];
Console.WriteLine(res);
pool.Return(again);
}
}
Результат выполнения кода:
2