ArrayExtensions.EqualsTo
От: rameel https://github.com/rsdn/CodeJam
Дата: 07.11.16 10:25
Оценка: +1
Всем привет!

Предлагаю добавить ограничение IEquatable<T> и дополнительную перегрузку для Nullable.
public static bool EqualsTo<T>(this T[] a, T[] b) where T : IEquatable<T>
public static bool EqualsTo<T>(this T?[] a, T?[] b) where T : struct, IEquatable<T>

Это позволит исключить из генерации перегрузки для nullable примитивных типов. Плюсом будет то, что таким образом будет обеспечена более производительная поддержка для типов реализующих IEquatable<T>, в особенности для value-типов.

Для типов, не реализующих IEquatable<T>, у нас есть другая перегрузка, принимающая IEqualityComparer<T>.
public static bool EqualsTo<T>(this T[] a, T[] b, IEqualityComparer<T> comparer)

Сейчас у нас первый метод делегирует вызов во второй с передачей компарера, от чего появляется дополнительная косвенность в случаях, когда этого можно было бы избежать.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.