Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
8 / 8 / 4
Регистрация: 11.02.2017
Сообщений: 100

Downcast

08.01.2018, 17:20. Показов 1767. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всегда думал что в переменной дочернего класса может сохранить объект родительского класса(через кастинг), но возникает вопрос. почему возникает ошибка выполнения в след коде ?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        class B
    {}
    class D:B
    {}
    
    class Program
    {
        public static void Main(string[] args)
        {
            B b1 = new B();
 
            D d6;
            d6 = (D)b1;
            Console.ReadKey();
            
        }
    }
я же делаю явное приведение к дочернему классу
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.01.2018, 17:20
Ответы с готовыми решениями:

Upcast и Downcast
Код: namespace ConsoleApplication34 { class Employee { public int GetYearsEmployed() { ...

Upcast и downcast
Доброго времени суток. помогите с решением задачи. задача по сортировке массива методом пузырька. массив числе передаю методу сортировщику,...

Методы с UpCast и DownCast
Почему экземпляру inst3, нельзя получить к полю fieldDerived, но при этом срабатывает Method() из класса Derived? Почему различаются...

6
 Аватар для Cupko
658 / 595 / 171
Регистрация: 17.07.2012
Сообщений: 1,682
Записей в блоге: 1
08.01.2018, 17:28
Цитата Сообщение от Тапок ярости Посмотреть сообщение
Всегда думал что в переменной дочернего класса может сохранить объект родительского класса(через кастинг)
Что-то вы не так думаете. Тип B вообще ничего не знает и не должен знать о типе D. У вас экземпляр типа B, и он не имеет ни полей ни методов типа D. Как вы вообще себе это представляете?
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
08.01.2018, 17:34
можно так

C#
1
2
3
B b1 = new B();
B d6 = new D();
d6 = b1;
0
8 / 8 / 4
Регистрация: 11.02.2017
Сообщений: 100
08.01.2018, 17:35  [ТС]
как тогда даункаст работает ?
0
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
08.01.2018, 18:00
Цитата Сообщение от Тапок ярости Посмотреть сообщение
как тогда даункаст работает ?
C#
1
2
B b1 = new D();
D d = (D)b1
0
 Аватар для dailydose
671 / 217 / 88
Регистрация: 21.07.2016
Сообщений: 1,036
Записей в блоге: 2
09.01.2018, 11:42
даункаст насколько я знаю работает если до этого был апкаст.
т.е. даункаст без апкаста не пашет.
0
Эксперт .NET
 Аватар для Usaga
14311 / 9392 / 1355
Регистрация: 21.01.2016
Сообщений: 35,421
09.01.2018, 12:33
Цитата Сообщение от Тапок ярости Посмотреть сообщение
как тогда даункаст работает ?
Вы можете выполнять приведение к типу, которым приводимый и является напрямую или один из его предков. Вы не можете приводить B к D потому, что B не является классом D.

C#
1
2
B b1 = new B();
D d1 = (D)b1;    // Неверно! b1 указывает на B.
C#
1
2
B b1 = new D();
D d1 = (D)b1;    // Верно! b1 указывает на D.
Возможность такого приведения проверяется CLR во время исполнения кода.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.01.2018, 12:33
Помогаю со студенческими работами здесь

Про downcast AuthorizationRule
Доброго времени суток Подскажите пожалуйста, почему downcast переменной item работает, с учетом следующего: 1....

Приведение типов. UpCast & DownCast
Объяснить пожалуйста как работать с таким понятием как приведение типов (наследование, приведение к базовому типу)? В чем заключается суть?...

Спецификация generic upcast/downcast в generic типах
Почему только интерфейсы и делегаты в C# поддерживают технику ковариантности и контрвариантности в Generic типах?

C++ downcast
Решил продолжить разговор и сформулировать свой вопрос просто и чётко. class A { public: A(); int bX; int* bY; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru