Там какой-либо путь состоит в том, чтобы назвать родительскую версию переопределенного метода? (.NET C#)

Кажется, что JEP должен выполнить задание

37
задан Jader Dias 14 January 2009 в 02:58
поделиться

4 ответа

На уровне IL Вы могли, вероятно, выпуск a call, а не callvirt, и делать задание - но если мы ограничиваем нас C#;-p ( редактирование штопка! время выполнения останавливает Вас: VerificationException: "Операция могла дестабилизировать время выполнения".; удалите virtual, и это хорошо работает; слишком умный наполовину...)

Внутренняя часть эти ChildClass тип, можно использовать base.methodTwo() - однако, это не возможно внешне. И при этом Вы не можете спуститься больше чем по одному уровню - нет никакого base.base.Foo() поддержка.

Однако при отключении полиморфизма с помощью сокрытия метода можно добраться ответ , Вы хотите, но по плохим причинам:

class ChildClass : ParentClass
{
    new public int methodTwo() // bad, do not do
    {
        return 2;
    }
}

Теперь можно получить различный ответ от того же объекта в зависимости от того, определяется ли переменная как ChildClass или ParentClass.

37
ответ дан Marc Gravell 7 August 2019 в 04:31
поделиться

К моему знанию, когда-то метод был переопределен тогда, Вы не можете назвать родительский метод.

1
ответ дан Vince Panuccio 7 August 2019 в 04:31
поделиться

В ChildClass.methodTwo(), можно звонить base.methodTwo().

За пределами класса, звоня ((ParentClass)a).methodTwo()) будет вызов ChildClass.methodTwo. Это - вся причина, почему существуют виртуальные методы.

56
ответ дан Tot Zam 7 August 2019 в 04:31
поделиться

Я думал бы, что это не возможно, если Вы не делаете экземпляр ParentClass непосредственно. Это - самая сущность наследования, полиморфизма...

0
ответ дан Julius A 7 August 2019 в 04:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: