|
0 / 0 / 0
Регистрация: 24.04.2020
Сообщений: 18
|
|||||||||||
Преобразование типов в ограниченных обобщенных классах21.08.2020, 17:08. Показов 10893. Ответов 28
Здравствуйте, друзья.
Изучаю C#. Соответственно экспериментирую с кодом в процессе изучения. Такой вопрос. Имеется допустим иерархия классов:
на несуразность примера, это просто для экспериментов). Так вот выдает ошибку о невозможности преобразования:
Можете, пожалуйста, объяснить такое поведение? В чем я ошибаюсь?
0
|
|||||||||||
| 21.08.2020, 17:08 | |
|
Ответы с готовыми решениями:
28
Арифметические действия в обобщенных классах Взаимосвязь типов в двух обобщённых классах Преобразование типов данных в классах |
|
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
|
||
| 25.08.2020, 17:54 | ||
|
1
|
||
|
1596 / 601 / 185
Регистрация: 05.12.2015
Сообщений: 970
|
||
| 25.08.2020, 17:58 | ||
|
класс Base не знает кто у него наследники компилятор не обязан рыться в сборках в поисках наследников
0
|
||
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|||
| 25.08.2020, 18:00 | |||
|
Еще раз повторюсь: обобщения в шарпе — это не то же самое, что шаблоны в C++: компилятор не генерирует новый тип под каждое конкретное использование. Задача компилятора — создать один универсальный тип, который должен работать с любыми комбинациями конкретных типов на момент его конструирования. Еще раз, для закрепления: обобщенный тип после компиляции существует в одном экземпляре, который должен работать со всеми возможными комбинациями типов. Сконструированные типы под конкретные аргументы генерируются уже средой выполнения во время работы программы. И во время этой же работы может быть динамически подключен новый тип из какой-нибудь сборки (см. плагины), о наличии которого компилятор понятия не имел на момент компиляции кода, как и не мог предсказать, что через 5 лет после компиляции программы какой-нибудь Вася напишет новый плагин со своим типом, наследующимся от Base. А вот какой метод вызывать — это компилятор должен решить на стадии компиляции, руководствуясь имеющейся информацией, при этом создав один класс, который должен работать со всеми типами, удовлетворяющими ограничениям.
1
|
|||
|
0 / 0 / 0
Регистрация: 24.04.2020
Сообщений: 18
|
|
| 25.08.2020, 18:08 [ТС] | |
|
Спасибо большое, друзья, за подробные доходчивые ответы. Теперь осознал происходящее, разобрался.
0
|
|
|
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
|
||
| 25.08.2020, 18:20 | ||
|
0
|
||
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|
| 25.08.2020, 18:51 | |
|
0
|
|
|
1851 / 1199 / 502
Регистрация: 14.10.2018
Сообщений: 3,311
|
||||||
| 25.08.2020, 18:53 | ||||||
|
Господа, если не против, вставлю свой вопрос в эту тему, дабы не плодить новую, имхо вопрос похож.
В голову пришла бредовая идея (в реале так писать никогда не буду), но ради любопытства хотелось бы знать какой именно метод переопределяется в классе C, и как с этим будет справлять тоже обобщение?
0
|
||||||
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||||
| 25.08.2020, 18:54 | ||||
|
Добавлено через 1 минуту
2
|
||||
|
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
|
|||
| 25.08.2020, 19:34 | |||
1
|
|||
| 25.08.2020, 19:34 | |
|
Сравнение обобщённых типов Динамическое изменение типа объекта (для обобщённых типов)
Инициализация ссылочных типов в структурах\классах Обработка исключений в классах для пользовательских типов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр.
Дословно, отклонённая. . .
|
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы
Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
|
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
|
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2.
Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
|
|
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
|
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
|
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
|
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
|