Сравниваемый тип данных передается ему в качестве аргумента типаТ.В этом интерфейсе определяется методCompareTo (), как показано ниже.
int CompareTo(Т
В этом методе сравниваются вызывающий объект и другой объект, определяемый параметром
Для того чтобы воспользоваться методомCompareTo (), необходимо указать ограничение, которое требуется наложить на аргумент типа для реализации обобщенного интерфейсаIComparable
Ниже приведен пример применения обобщенного интерфейсаIComparable
// Требуется обобщенный интерфейс IComparable
public static bool InRange
what.CompareTo(obs[obs.Length-1]) > 0) return false; return true;
}
В приведенном ниже примере программы демонстрируется применение обоих методовIs In() иInRange() на практике.
// Продемонстрировать применение обобщенных // интерфейсов IComparable
using System;
// Теперь в классе MyClass реализуются обобщенные // интерфейсы IComparable
public MyClass(int x) { Val = x; }
// Реализовать обобщенный интерфейс IComparable
return Val - other.Val; // Now, no cast is needed.
> \
// Реализовать обобщенный интерфейс IEquatable
public bool Equals(MyClass other) { return Val == other.Val;
}
// Переопределить метод Equals(Object).
public override bool Equals(Object obj) { if(obj is MyClass)
return Equals((MyClass) obj); return false;
}
// Переопределить метод GetHashCode().
public override int GetHashCode() { return Val.GetHashCode() ;
}
}
class CompareDemo {
// Требуется обобщенный интерфейс IEquatable
public static bool IsIn
if(v.Equals(what)) // Применяется метод Equals() return true;
return false;
}