Читаем C# 4.0 полное руководство - 2011 полностью

В ходе реализации интерфейсаIEquatableобычно требуется также переопределять методыGetHashCode иEquals (Object),определенные в классеObject,чтобы они оказались совместимыми с конкретной реализацией методаEquals .Ниже приведен пример программы, в которой демонстрируется исправленный вариант упоминавшегося ранее методаIs In .

// Требуется обобщенный интерфейс IEquatable.

public static bool IsIn(T what, T[] obs) where T : IEquatable { foreach(T v in obs)

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(Тother)

В этом методе сравниваются вызывающий объект и другой объект, определяемый параметромother.В итоге возвращается нуль, если вызывающий объект оказывается больше, чем объектother; и отрицательное значение, если вызывающий объект оказывается меньше, чем объектother.

Для того чтобы воспользоваться методомCompareTo , необходимо указать ограничение, которое требуется наложить на аргумент типа для реализации обобщенного интерфейсаIComparable.А затем достаточно вызвать методCompareTo, чтобы сравнить два экземпляра параметра типа.

Ниже приведен пример применения обобщенного интерфейсаIComparable.В этом примере вызывается методInRange , возвращающий логическое значениеtrue,если объект оказывается среди элементов отсортированного массива.

// Требуется обобщенный интерфейс IComparable. В данном методе // предполагается, что массив отсортирован. Он возвращает логическое // значение true, если значение параметра what оказывается среди элементов // массива, передаваемых параметру obs.

public static bool InRange(T what, T[] obs) where T : IComparable { if(what.CompareTo(obs[0]) < 0 ||

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных