Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗csSpTyCo 150 of 509 menu
◀ ▶

Ковариантный результат override в C#

Ковариантный возвращаемый тип override должен быть производным от типа базового метода. Вызов через базовую ссылку остаётся типобезопасным.

Через переменную Factory метод Create возвращает объект Special, а в контракте базы тип остаётся Item. Своей метки у Special нет, поэтому видна метка базы:

Factory f = new Factory2(); Console.WriteLine(f.Create().Label); // выведет "item" class Item { public string Label => "item"; } class Special : Item { } class Factory { public virtual Item Create() => new Item(); } class Factory2 : Factory { public override Special Create() => new Special(); }

Сделайте метод базы, который возвращает животное, а в наследнике верните собаку.

Вызовите метод через переменную базового типа и выведите кличку "Rex".

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить