![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Вопрос всем на засыпку. Что будет, если скомпилить такой код?
Не буду томить и заставлять copy-paste'ить его в студию ![]() Как выяснилось, MS C# compiler молча съедает первый this[T key] когда T = типу парметра второго индексатора. А вот Mono compiler умнее в данном случае и ругается: cannot define overload members that may unify for some type parameter substitutions Риторический вопрос: и что делать, если код должен быть совместимым с обоими? ![]() Это сообщение отредактировал(а) arilou - 14.1.2006, 19:38 |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 25 Всего: 173 |
Очень странно. Прав, естественно, Mono, потому что в спецификации C# 2.0 черным по белому (20.1.8) прописан запрет такой перегрузки и даже пример приведен.
Баг-репорт в MS писать не пробовали? ![]() -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Угу, непонятно что делать в таком случае.
Получается, что есть "обычный int" и есть "правильный int", и M$ выбирает "правильный", хотя обычному программеру довольно сложно разобраться, какой из int-индексов правильный - первый или второй. -------------------- ![]() |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 25 Всего: 173 |
mr.DUDA
Ничего непонятного тут нет, такая конструкция просто запрещена:
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Есть идеи, если оверлоады мне все таки нужны?
|
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 25 Всего: 173 |
arilou
А поподробнее задачу описать нельзя? Пока трудно хоть что-то сказать. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
-ser- |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 1.2.2005 Репутация: 5 Всего: 13 |
может кто-то пояснит в чем проблема, только в том что компилятор не ругается? но код-то работает правильно, какие претензии (из двух правильных выбран вариант "наиболее правильный"). ведь нельзя же одновременно пустить поезд по двум веткам сразу.
-------------------- "Тонкая, однако, работа." |
|||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
В том и дело, что наиболее верного не выбрать -- оба могут иметь одинаковую сигнатуру.
|
|||
|
||||
-ser- |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 1.2.2005 Репутация: 5 Всего: 13 |
я имел ввиду, хотели перегрузить, и пожалуйста, получили желаемый результат. может я что-то не понимаю.
-------------------- "Тонкая, однако, работа." |
|||
|
||||
Exception |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
Посмотри. Если generic-параметр Т у нас будет int, то
как бы "превратится" в
|
||||
|
|||||
arilou |
|
||||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Тут еще вот какая инфа проскользнула:
|
||||
|
|||||
-ser- |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 1.2.2005 Репутация: 5 Всего: 13 |
arilou, если уж так надо и перегрузить и генерики использовать, то может попробовать что-то вроде
-------------------- "Тонкая, однако, работа." |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 25 Всего: 173 |
arilou
Интересно. Где бы взять последнию версию спецификации? Дожили, тонкие моменты в C# приходится разрешать ссылками на параграфы стандарта... За что боролись... -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
-ser- |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 1.2.2005 Репутация: 5 Всего: 13 |
То что приведено arilou и есть последняя версия
http://www.ecma-international.org/publicat...ds/Ecma-334.htm -------------------- "Тонкая, однако, работа." |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |