Когда этот код запускается, выдается «Дочернее выполнение» , даже если я приведу его к классу Parent ? Я, вероятно, делаю это неправильно, если так, как я могу достичь желаемого результата, имея вывод "Parent running" ? Parent instance = new Child (); должен оставаться таким же.
class Program
{
class Parent
{
public virtual void Run()
{
Console.WriteLine("Parent running.");
}
}
class Child : Parent
{
public override void Run()
{
Console.WriteLine("Child running.");
}
}
static void Main(string[] args)
{
Parent instance = new Child();
(instance as Parent).Run();
Console.ReadLine();
}
}
EDIT:
Заметил, удаляю ли я виртуальное ключевое слово из класса Parent и пометьте версию этого метода для ребенка как new , она "решает" проблему.
class Program
{
class Parent
{
public void Run()
{
Console.WriteLine("Parent running.");
}
}
class Child : Parent
{
public new void Run()
{
Console.WriteLine("Child running.");
}
}
static void Main(string[] args)
{
Parent instance = new Child();
(instance as Parent).Run();
Console.ReadLine();
}
}