| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Вызов виртуал метода через ссылку на базовый тип |
| Автор: Valentin 4.5.2005, 18:34 |
| Здравствуйте! Вопрос по C#: Пусть определен базовый класс с виртуальным методом f() и цепочка производных от него классов, переопределяющих этот метод: public class c0 { ... public virtual void f() {...}; } public class c1 : с0 { ... public override void f() {...}; } public class c2 : с1 { ... public override void f() {...}; } ................................................... public class cN : сN-1 { ... public override void f() {...}; } Пусть есть переменная самого базового класса C0, которая определяется как c0 ref = new cK(); Здесь cK - один из производных от c0 классов, где K<=N. То есть, ref есть ссылка на экземляр произвольного производного от c0 класса. ВОПРОС: Как, зная ref, ссылающуюся на экземпляр класса cK, вызвать метод f(), принадлежащий промежуточному (между c0 и cN) классу этой же цепочки, где L<=K? Спасибо! |
| Автор: Domestic Cat 4.5.2005, 19:05 |
| Никак, если каждый из методов в цепочке не вызывает base.f(), и то при этом будут вызваны все f() между K и L (при условии что cL.f() уже не вызывает метод базового класса). ЗЫ ref - кейворд |
| Автор: Valentin 4.5.2005, 19:43 |
| Уважаемый Domestic Cat! Большое спасибо за помощь. Спасибо и за поправку (ref). |