Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .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).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)