static void EnsureCapacityCore<T>(ref T[] array, int index, ArrayPool<T> pool) {
			if (array.Length <= index) {
				var newSize = array.Length * 2;
				var newArray = pool.Rent((index < newSize) ? newSize : (index * 2));
				Array.Copy(array, 0, newArray, 0, array.Length);

				pool.Return(array, clearArray: !RuntimeHelpersAbstraction.IsWellKnownNoReferenceContainsType<T>());

				array = newArray;
			}
		}
            public void Dispose()
            {
                if (pool != null)
                {
                    // clear manually(length optimize)
                    if (!RuntimeHelpersAbstraction.IsWellKnownNoReferenceContainsType <T>())
                    {
                        System.Array.Clear(Array, 0, Length);
                    }

                    pool.Return(Array, clearArray: false);
                    pool = null;
                }
            }
Beispiel #3
0
 public void Dispose()
 {
     DisposeManually(!RuntimeHelpersAbstraction.IsWellKnownNoReferenceContainsType <T>());
 }