4 using System.Collections.Generic;
7 namespace SiliconStudio.Core.Extensions
14 public static bool ArraysEqual<T>(
IList<T> a1,
IList<T> a2, IEqualityComparer<T> comparer = null)
16 if (ReferenceEquals(a1, a2))
19 if (a1 == null || a2 == null)
22 if (a1.Count != a2.Count)
27 for (
int i = 0; i < a1.Count; i++)
29 if (!comparer.Equals(a1[i], a2[i]))
36 public static int ComputeHash<T>(
this ICollection<T> data, IEqualityComparer<T> comparer = null)
46 int hash = 17 + data.Count;
48 foreach (T unknown
in data)
49 result = result*31 + comparer.GetHashCode(unknown);
54 public static int ComputeHash<T>(
this T[] data, IEqualityComparer<T> comparer = null)
64 int hash = 17 + data.Length;
66 foreach (T unknown
in data)
67 result = result * 31 + comparer.GetHashCode(unknown);
72 public static T[] SubArray<T>(
this T[] data,
int index,
int length)
74 var result =
new T[length];
75 Array.Copy(data, index, result, 0, length);
79 public static T[] Concat<T>(
this T[] array1, T[] array2)
81 var result =
new T[array1.Length + array2.Length];
83 array1.CopyTo(result, 0);
84 array2.CopyTo(result, array1.Length);