diff --git a/csharp/Platform.Collections/Arrays/ArrayPool[T].cs b/csharp/Platform.Collections/Arrays/ArrayPool[T].cs
index 57e2ca9b..5479cc85 100644
--- a/csharp/Platform.Collections/Arrays/ArrayPool[T].cs
+++ b/csharp/Platform.Collections/Arrays/ArrayPool[T].cs
@@ -4,10 +4,13 @@
using Platform.Disposables;
using Platform.Collections.Stacks;
-#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member
-
namespace Platform.Collections.Arrays
{
+ ///
+ /// Represents a set of arrays ready for reuse.
+ /// Представляет собой набор массивов готовых к повторному использованию.
+ ///
+ /// The array elements type.Тип элементов массива.
///
/// Original idea from http://geekswithblogs.net/blackrob/archive/2014/12/18/array-pooling-in-csharp.aspx
///
@@ -21,15 +24,43 @@ public class ArrayPool
private readonly int _maxArraysPerSize;
private readonly Dictionary> _pool = new Dictionary>(ArrayPool.DefaultSizesAmount);
+ ///
+ /// Initializes a new instance of the ArrayPool class using the specified maximum number of arrays per size.
+ /// Инициализирует новый экземпляр класса ArrayPool, используя указанное максимальное количество массивов на каждый размер.
+ ///
+ /// The maximum number of arrays in the pool per size.Максимальное количество массивов в пуле на каждый размер.
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public ArrayPool(int maxArraysPerSize) => _maxArraysPerSize = maxArraysPerSize;
+ ///
+ /// Initializes a new instance of the ArrayPool class using the default maximum number of arrays per size.
+ /// Инициализирует новый экземпляр класса ArrayPool, используя максимальное количество массивов на каждый размер по умолчанию.
+ ///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public ArrayPool() : this(ArrayPool.DefaultMaxArraysPerSize) { }
+ ///
+ /// Retrieves an array from the pool, which will automatically return to the pool when the container is disposed.
+ /// Извлекает из пула массив, который автоматически вернётся в пул при высвобождении контейнера.
+ ///
+ /// The allocated array size.Размер выделяемого массива.
+ ///
+ /// The disposable container containing either a new array or an array from the pool.
+ /// Высвобождаемый контейнер содержащий либо новый массив, либо массив из пула.
+ ///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Disposable AllocateDisposable(long size) => (Allocate(size), Free);
+ ///
+ /// Replaces the array with another array from the pool with the specified size.
+ /// Заменяет массив на другой массив из пула с указанным размером.
+ ///
+ /// The source array.Исходный массив.
+ /// A new array size.Новый размер массива.
+ ///
+ /// An array with a new size.
+ /// Массив с новым размером.
+ ///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Disposable Resize(Disposable source, long size)
{
@@ -44,12 +75,30 @@ public Disposable Resize(Disposable source, long size)
return destination;
}
+ ///
+ /// Clears the pool.
+ /// Очищает пул.
+ ///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public virtual void Clear() => _pool.Clear();
+ ///
+ /// Retrieves an array with the specified size from the pool.
+ /// Извлекает из пула массив с указанным размером.
+ ///
+ /// The allocated array size.Размер выделяемого массива.
+ ///
+ /// An array from the pool or a new array.
+ /// Массив из пула или новый массив.
+ ///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public virtual T[] Allocate(long size) => size <= 0L ? Array.Empty() : _pool.GetOrDefault(size)?.PopOrDefault() ?? new T[size];
+ ///
+ /// Frees the array to the pool for later reuse.
+ /// Освобождает массив в пул для последующего повторного использования.
+ ///
+ /// The array to be freed into the pool.Массив который нужно освободить в пул.
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public virtual void Free(T[] array)
{
@@ -65,4 +114,4 @@ public virtual void Free(T[] array)
stack.Push(array);
}
}
-}
+}
\ No newline at end of file