Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вызов виртуал метода через ссылку на базовый тип 
:(
    Опции темы
Valentin
Дата 4.5.2005, 18:34 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Здравствуйте!
Вопрос по 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 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 9
Всего: 172



Никак, если каждый из методов в цепочке не вызывает base.f(), и то при этом будут вызваны все f() между K и L (при условии что cL.f() уже не вызывает метод базового класса).

ЗЫ ref - кейворд


--------------------

PM   Вверх
Valentin
Дата 4.5.2005, 19:43 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Уважаемый Domestic Cat!
Большое спасибо за помощь. Спасибо и за поправку (ref).
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0466 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.