| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .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 |
| Да не обязательно в конструкторе. Параметры сравнения можно менять у уже существующего объекта(если есть в том нужда). |