|
1 / 1 / 1
Регистрация: 14.10.2015
Сообщений: 94
|
||||||
Ковариантность и контрвариантность01.06.2018, 15:41. Показов 1822. Ответов 4
Добрый день, в книге дошел до ковариантности и контравариантности и появился вопрос. Если с ковариантностью все понятно, потому что если возвращается производный класс, то он обязательно содержит методы базового класса, то вот с контравариантностью возникают проблемы.
Смотрите пример:
0
|
||||||
| 01.06.2018, 15:41 | |
|
Ответы с готовыми решениями:
4
Ковариантность и контрвариантность
|
|
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
|
|||
| 01.06.2018, 16:22 | |||
|
0
|
|||
|
|
||||||||||||
| 01.06.2018, 17:33 | ||||||||||||
|
может проще будет исходить из того, что ты сможешь сделать с текущим T, если он будет понижен/повышен внутри метода, и внешне:
# out, т.е. означает "вне", значит работаем с отдаваемым значением. Если у нас есть условный тип B унаследованый от A, то отдавая B в условную переменую A мы не нарушаем логики.
Добавлено через 10 минут # in означает что мы можем ожидать извне более "высокий" тип, который все же будет наследником базового. С возможностью приведения тут все с точностью до наоборот
Добавлено через 5 минут
0
|
||||||||||||
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||
| 03.06.2018, 10:57 | ||
Сообщение было отмечено Ermitash как решение
РешениеКонтравариантность делегатов в параметрах означает, что если меется делегат вида void Func(B arg), то переменной его типа можно присвоить ссылку на метод void Foo(A arg), где B : A.В вашем же примере никакая контравариантность не используется, потому как делегату вида void DelegateFunction(B arg) вы присваиваете ссылку на метод void biba(B arg) — параметры имеют один и тот же тип.Вместо контравариантности вы пытаетесь передать ссылку на А в метод, принимающий B, что просто-напросто запрещено правилами языка, когда В наследуется от А.
1
|
||
|
1 / 1 / 1
Регистрация: 14.10.2015
Сообщений: 94
|
|
| 06.06.2018, 12:31 [ТС] | |
|
kolorotur, спасибо большое!) Благодаря тебе я понял. Тогда да, это логично, потому что производный класс содержит также и базовый.
0
|
|
| 06.06.2018, 12:31 | |
|
Помогаю со студенческими работами здесь
5
Ковариантность и контравариантность делегатов
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3.
Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|