private static int FindSubArray<T>(T[] array, T[] subArray) where T : IComparable { int match = 0; for (int i = 0; i < array.Length; ++i) { if (array[ i ].CompareTo(subArray[ match ]) == 0) { match++; if (match == subArray.Length) { return i - match + 1; } } else { match = 0; } }