1 / 1 / 1
Регистрация: 13.12.2011
Сообщений: 40
|
|||||||||||
1 | |||||||||||
Проблема при сравнении: "Оператор ">" не может применяться к операндам типа "Т" и "Т""13.12.2011, 21:38. Показов 5151. Ответов 5
Метки нет Все метки)
(
Добрый день , пишу сортировку , все делаю на основе Т , но вот в чем проблемма
0
|
|
13.12.2011, 21:38 | |
Ответы с готовыми решениями:
5
Оператор += не может применяться к операндам типа
Оператор && не может применяться к операндам типа string и int Оператор "==" не может применяться к операндам одинакового типа |
112 / 112 / 22
Регистрация: 26.12.2008
Сообщений: 166
|
|
13.12.2011, 22:12 | 2 |
компилятор ругается на то что не знает реализует ли твой тип Т оператор >, тут надо по другому идти, сравнение выполнять через
collection[j - 1].CompareTo(collection[i]), и добавить where T : IComparable<T> , такое ограничение чтобы тип Т реализовал CompareTo.
1
|
1 / 1 / 1
Регистрация: 13.12.2011
Сообщений: 40
|
|
13.12.2011, 22:20 [ТС] | 3 |
Спасибо, большое ! Вроде бы работает ))
0
|
![]() 17437 / 12829 / 3361
Регистрация: 17.09.2011
Сообщений: 21,107
|
||||||
13.12.2011, 22:28 | 4 | |||||
Все-таки в реализации шаблонных классов для сравнения лучше использовать ссылку на IComparer<T>, так как если этого не сделать, то сначала придется делать проверку collection[j - 1] != null, а если в качестве типа T используется структура, то будет иметь место распаковка/запаковка, что нам совсем не нужно.
Лучше использовать примерно такой паттерн:
3
|
112 / 112 / 22
Регистрация: 26.12.2008
Сообщений: 166
|
|||||||||||
13.12.2011, 23:20 | 5 | ||||||||||
если так, то может быть в первой строчке надо:
0
|
![]() 17437 / 12829 / 3361
Регистрация: 17.09.2011
Сообщений: 21,107
|
|
13.12.2011, 23:52 | 6 |
Нет, так делать не стоит. Мы же не коллекцию сравнивальщиков создаем, а коллекцию сравниваемых объектов.
То есть тип Т должен быть не объектом, который реализует механизмы сравнивания двух других объектов, а служит аргументом для сравнивания. Думаю, понятно выразился ![]()
2
|
13.12.2011, 23:52 | |
13.12.2011, 23:52 | |
Помогаю со студенческими работами здесь
6
При компиляции выскакивает ошибка "оператор == не может применяться к операндам типа "Т" и "Т" Посимвольное сравнение: оператор "==" не может применяться к операндам типа string и char
Оператор "<" не может применяться к операндам типа "Tip_Element" Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |