using System; using System.Linq; namespace ProGroups { internal static class ArrayExt { public static void Add(ref T[] array, T val) { T[] array2 = new T[array.Length + 1]; Array.Copy(array, array2, array.Length); array2[array.Length] = val; array = array2; } public static void AddRange(ref T[] array, T[] values) { T[] array2 = new T[array.Length + values.Length]; Array.Copy(array, array2, array.Length); Array.Copy(values, 0, array2, array.Length, values.Length); array = array2; } public static void Remove(ref T[] array, T value) { array = array.Where((T x) => !value.Equals(x)).ToArray(); } public static void Remove(ref T[] array, T[] values) { array = array.Where((T x) => !values.Contains(x)).ToArray(); } public static void RemoveAt(ref T[] array, int index) { T[] array2 = new T[array.Length - 1]; for (int i = 0; i < array.Length; i++) { if (i != index) { array2[(i <= index) ? i : (i - 1)] = array[i]; } } array = array2; } } }