From c2ec5c45a44f4e29aa9f3be7d3c52fa42e82ad67 Mon Sep 17 00:00:00 2001 From: Sergio Pedri Date: Mon, 13 Apr 2020 15:37:02 +0200 Subject: [PATCH] Removed unnecessary iterator block --- .../DiscontiguousBuffers/MemoryGroup{T}.Consumed.cs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/ImageSharp/Memory/DiscontiguousBuffers/MemoryGroup{T}.Consumed.cs b/src/ImageSharp/Memory/DiscontiguousBuffers/MemoryGroup{T}.Consumed.cs index 48da90310..493fe6e33 100644 --- a/src/ImageSharp/Memory/DiscontiguousBuffers/MemoryGroup{T}.Consumed.cs +++ b/src/ImageSharp/Memory/DiscontiguousBuffers/MemoryGroup{T}.Consumed.cs @@ -26,10 +26,13 @@ namespace SixLabors.ImageSharp.Memory public override IEnumerator> GetEnumerator() { - for (int i = 0; i < this.source.Length; i++) - { - yield return this.source[i]; - } + /* The runtime sees the Array class as if it implemented the + * type-generic collection interfaces explicitly, so here we + * can just cast the source array to IList> (or to + * an equivalent type), and invoke the generic GetEnumerator + * method directly from that interface reference. This saves + * having to create our own iterator block here. */ + return ((IList>)this.source).GetEnumerator(); } public override void Dispose()