48 lines
1.0 KiB
C#
48 lines
1.0 KiB
C#
using System;
|
|
using System.Linq;
|
|
|
|
namespace ProGroups
|
|
{
|
|
internal static class ArrayExt
|
|
{
|
|
public static void Add<T>(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<T>(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<T>(ref T[] array, T value)
|
|
{
|
|
array = array.Where((T x) => !value.Equals(x)).ToArray();
|
|
}
|
|
|
|
public static void Remove<T>(ref T[] array, T[] values)
|
|
{
|
|
array = array.Where((T x) => !values.Contains(x)).ToArray();
|
|
}
|
|
|
|
public static void RemoveAt<T>(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;
|
|
}
|
|
}
|
|
}
|