Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1038 of 1492 menu
◀ ▶

Метод 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

Смотрите также

  • метод Rent,
    взять массив
  • свойство Shared,
    общий пул
  • ArrayPool,
    класс пула
  • метод KeepAlive,
    удержать объект
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить