| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Конструктор в наследуемом классе. |
| Автор: Felixx 12.10.2011, 21:38 | ||||||
| Доброго время суток. У меня имеется проблемка небольшая, подскажите пожалуйста что не так сделано?.. Суть проблемы такова: Имеем абстрактный класс:
1й наследник:
2й Наследник:
В консоль выводитса: test2 test1 тоесть сначало из метода WriteImpl и только потом из конструктора.. С чем это может быть связано? Может что то не так написано? |
| Автор: mes 12.10.2011, 21:47 |
| конструктор предка выполняется раньше конструктора наследника.. |
| Автор: Felixx 12.10.2011, 21:50 | ||
А как тогда можно сделать? метод вить абстрактный.. Убрать метод из предка и выполнять его руками в наследнике получаетса? |
| Автор: mes 12.10.2011, 22:02 |
проблема не в методе, а в очередности выполнения констукторов.. если надо выполнить после конструктора наследника, то это можно выполнить только "извне" то, есть тот кто создает объект, должен вызвать и этот метод.. |
| Автор: math64 13.10.2011, 07:40 | ||||||
| Я уже ответил в старом месте темы http://forum.vingrad.ru/index.php?showtopic=339714&view=findpost&p=2413254 Поясню, почему в конструкторе (C#) лучше не вызывать виртуальные методы:
В С++ поведение конструктора при вызове виртуальных методов безопаснее: если бы f() был бы не абстрактным, вызвался вы A::f(). Решение может быть например такое:
Добавлено @ 07:47 или такое:
|