В ходе реализации интерфейсаIEquatable
// Требуется обобщенный интерфейс IEquatable
public static bool IsIn
if(v.Equals(what)) // Применяется метод Equals. return true;
return false;
}
Обратите внимание в приведенном выше примере на применение следующега ограничения.
where Т : IEquatable
Это ограничение гарантирует, что только те типы, в которых реализован интерфейсIEquatable,являются действительными аргументами типа для методаIs In . Внутри этого метода применяется методEquals , который определяет равенство одного объекта другому.
Для определения относительного порядка следования двух элементов применяется интерфейсI Comp а г able.У этого интерфейса имеются две формы: обобщенная и необобщенная. Обобщенная форма данного интерфейса обладает преимуществом обеспечения типовой безопасности, и поэтому мы рассмотрим здесь именно ее. Обобщенный интерфейсIComparable
public interface IComparable
Сравниваемый тип данных передается ему в качестве аргумента типаТ.В этом интерфейсе определяется методCompareTo , как показано ниже.
int CompareTo(Т
В этом методе сравниваются вызывающий объект и другой объект, определяемый параметром
Для того чтобы воспользоваться методомCompareTo , необходимо указать ограничение, которое требуется наложить на аргумент типа для реализации обобщенного интерфейсаIComparable
Ниже приведен пример применения обобщенного интерфейсаIComparable
// Требуется обобщенный интерфейс IComparable
public static bool InRange