diff --git a/ICSharpCode.Decompiler/Util/CollectionExtensions.cs b/ICSharpCode.Decompiler/Util/CollectionExtensions.cs index 1966609ae..e566a7845 100644 --- a/ICSharpCode.Decompiler/Util/CollectionExtensions.cs +++ b/ICSharpCode.Decompiler/Util/CollectionExtensions.cs @@ -4,7 +4,7 @@ using System.Linq; namespace ICSharpCode.Decompiler.Util { - public static class CollectionExtensions + static class CollectionExtensions { public static void Deconstruct(this KeyValuePair pair, out K key, out V value) { diff --git a/ILSpy/ExtensionMethods.cs b/ILSpy/ExtensionMethods.cs index 03359c32b..6223c8f3b 100644 --- a/ILSpy/ExtensionMethods.cs +++ b/ILSpy/ExtensionMethods.cs @@ -159,5 +159,19 @@ namespace ICSharpCode.ILSpy return s; return s.Substring(0, length) + "..."; } + + /// + /// Equivalent to collection.Select(func).ToArray(), but more efficient as it makes + /// use of the input collection's known size. + /// + public static U[] SelectArray(this ICollection collection, Func func) + { + U[] result = new U[collection.Count]; + int index = 0; + foreach (var element in collection) { + result[index++] = func(element); + } + return result; + } } }