![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
SmartBye |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 15.5.2008 Репутация: нет Всего: нет |
Сейчас создаю структуру данных, которую нужно будет сортировать по нескольким критериям (т.е. разные типы сортировки), но так же мне хотелось бы, что бы эта же сортировка поддерживалась и в обратном порядке. В связи с этим возник вопрос, можно ли организовать так схему работы этого интерфейса, что бы не писать для каждого вида (т.е. по убыванию и во возрастанию) свой класс, наследующий IComparer?
Просто если для каждого вида сортировки писать по два вида классов (вверх и вниз), то лаконичности программы это не поспособствует. Сортировка идет через (имя переменной типа List<Тип>).Sort(интерфейс). |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 31 Всего: 142 |
Конечно можно. Просто введи в класс, реализующий IComparer, дополнительное свойство, ну например IsAsc, в методе Comare проверяй его значение и если оно true, сортируй по-возрастанию, в противном случае - по убыванию.
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
SmartBye |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 15.5.2008 Репутация: нет Всего: нет |
Да, что-то я сразу не сообразил, что в конструкторе к классу можно задать направление =)
|
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 31 Всего: 142 |
Да не обязательно в конструкторе. Параметры сравнения можно менять у уже существующего объекта(если есть в том нужда).
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |