Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Работа с интерфейсом IComparer


Автор: SmartBye 7.12.2009, 01:35
Сейчас создаю структуру данных, которую нужно будет сортировать по нескольким критериям (т.е. разные типы сортировки), но так же мне хотелось бы, что бы эта же сортировка поддерживалась и в обратном порядке. В связи с этим возник вопрос, можно ли организовать так схему работы этого интерфейса, что бы не писать для каждого вида (т.е. по убыванию и во возрастанию) свой класс, наследующий IComparer?

Просто если для каждого вида сортировки писать по два вида классов (вверх и вниз), то лаконичности программы это не поспособствует.

Сортировка идет через (имя переменной типа List<Тип>).Sort(интерфейс).

Автор: diadiavova 7.12.2009, 07:03
Конечно можно. Просто введи в класс, реализующий IComparer, дополнительное свойство, ну например IsAsc, в методе Comare проверяй его значение и если оно true, сортируй по-возрастанию, в противном случае - по убыванию.

Автор: SmartBye 7.12.2009, 12:46
Да, что-то я сразу не сообразил, что в конструкторе к классу можно задать направление =)

Автор: diadiavova 7.12.2009, 14:33
Да не обязательно в конструкторе. Параметры сравнения можно менять у уже существующего объекта(если есть в том нужда).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)