diff --git a/Recyclable.Collections/RecyclableList.cs b/Recyclable.Collections/RecyclableList.cs index b6dd393..c81d400 100644 --- a/Recyclable.Collections/RecyclableList.cs +++ b/Recyclable.Collections/RecyclableList.cs @@ -83,28 +83,21 @@ namespace Recyclable.Collections var sourceBlockCount = source?.Length ?? 0; int requiredBlockCount = (int)(newCapacity / blockSize) + (newCapacity % blockSize > 0 ? 1 : 0); - Span sourceSpan, newArraySpan; T[][] newMemoryBlocks = requiredBlockCount >= RecyclableDefaults.MinPooledArrayLength ? arrayPool.Rent(requiredBlockCount) : new T[requiredBlockCount][]; - switch (sourceBlockCount > 0) + var newArraySpan = new Span(newMemoryBlocks); + if (sourceBlockCount > 0) { - case true: - sourceSpan = new Span(source); - newArraySpan = new Span(newMemoryBlocks); - sourceSpan.CopyTo(newArraySpan); - if (sourceSpan.Length >= RecyclableDefaults.MinPooledArrayLength) - { - arrayPool.Return(source!); - } + var sourceSpan = new Span(source); + sourceSpan.CopyTo(newArraySpan); + if (sourceSpan.Length >= RecyclableDefaults.MinPooledArrayLength) + { + arrayPool.Return(source!); + } - newArraySpan = newArraySpan[sourceBlockCount..]; - break; - - case false: - newArraySpan = new Span(newMemoryBlocks); - break; + newArraySpan = newArraySpan[sourceBlockCount..]; } int uninitializedBlocksCount = newArraySpan.Length;