Объектно-ориентированное программирование на С#. Андрианова А.А - 126 стр.

UptoLike

126
public bool Less(T ob1, T ob2)
{
return ob1.CompareTo(ob2) < 0;
}
public bool LessOrEqual(T ob1, T ob2)
{
return ob1.CompareTo(ob2) <= 0;
}
public bool GreaterOrEqual(T ob1, T ob2)
{
return ob1.CompareTo(ob2) >= 0;
}
public bool Equal(T ob1, T ob2)
{
return ob1.CompareTo(ob2) == 0;
}
public bool NotEqual(T ob1, T ob2)
{
return ob1.CompareTo(ob2) != 0;
}
}
Поскольку методы сравнения объектов используют функцию
CompareTo, которую можно использовать только в случае, когда сравнимые
объекты раскрывают интерфейс IComparable, на обобщенный тип T
должно быть наложено ограничение:
class MyComparer<T> : IMyComparer<T> where T : IComparable
{
. . .
}
7.4. Обобщенные методы
Необобщенный класс может содержать отдельные обобщенные
методы. Обобщенные методы определяются следующим образом:
тип_функции имя_функции<список_обобщенных_типов>
(список_параметров)
{
. . .
}
          public bool Less(T ob1, T ob2)
          {
             return ob1.CompareTo(ob2) < 0;
          }

          public bool LessOrEqual(T ob1, T ob2)
          {
             return ob1.CompareTo(ob2) <= 0;
          }

          public bool GreaterOrEqual(T ob1, T ob2)
          {
             return ob1.CompareTo(ob2) >= 0;
          }

          public bool Equal(T ob1, T ob2)
          {
             return ob1.CompareTo(ob2) == 0;
          }

          public bool NotEqual(T ob1, T ob2)
          {
             return ob1.CompareTo(ob2) != 0;
          }
      }

     Поскольку методы сравнения объектов используют функцию
CompareTo, которую можно использовать только в случае, когда сравнимые
объекты раскрывают интерфейс IComparable, на обобщенный тип T
должно быть наложено ограничение:

      class MyComparer : IMyComparer where T : IComparable
      {
             .    .    .
      }


                                     7.4. Обобщенные методы

     Необобщенный класс может содержать отдельные обобщенные
методы. Обобщенные методы определяются следующим образом:

      тип_функции имя_функции<список_обобщенных_типов>
                                     (список_параметров)
      {
             .    .    .
      }

126