Browse Source

Added an Array Concatenate function

Kenric Nugteren 6 days ago
parent
commit
b54c668444
1 changed files with 33 additions and 0 deletions
  1. 33 0
      InABox.Core/CoreUtils.cs

+ 33 - 0
InABox.Core/CoreUtils.cs

@@ -2728,6 +2728,39 @@ namespace InABox.Core
             return to;
         }
 
+        /// <summary>
+        /// Concatenate <paramref name="arr1"/> with <paramref name="arr2"/>, returning a new array.
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="arr1"></param>
+        /// <param name="arr2"></param>
+        /// <returns></returns>
+        public static T[] Concatenate<T>(this T[] arr1, T[] arr2)
+        {
+            var newArr = new T[arr1.Length + arr2.Length];
+            arr1.CopyTo(newArr, 0);
+            arr2.CopyTo(newArr, arr1.Length);
+            return newArr;
+        }
+
+        /// <summary>
+        /// Concatenate all <paramref name="arrays"/> together.
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="arrays"></param>
+        /// <returns></returns>
+        public static T[] Concatenate<T>(params T[][] arrays)
+        {
+            var newArr = new T[arrays.Sum(x => x.Length)];
+            for(int i = 0, idx = 0; i < arrays.Length; ++i)
+            {
+                var arr = arrays[i];
+                arr.CopyTo(newArr, idx);
+                idx += arr.Length;
+            }
+            return newArr;
+        }
+
         public static IEnumerable<T> AnyOr<T>(this IEnumerable<T> enumerable, IEnumerable<T> or)
         {
             var any = false;