Код: Выделить всё
public class Animal
{
public void Talk()
{
Console.WriteLine("Parent");
}
}
public class Cat : Animal
{
public new void Talk()
{
Console.WriteLine("Child(Cat)");
}
}
public class Dog : Animal
{
public new void Talk()
{
Console.WriteLine("Child(Dog)");
}
}
Код: Выделить всё
public static Animal FirstKindOfTalk(Animal animal)
{
if (animal.GetType() == typeof(Cat))
{
var changed = animal as Cat;
if (changed is not null)
changed.Talk();
return changed;
}
else if (animal.GetType() == typeof(Dog))
{
var changed = animal as Dog;
if (changed is not null)
changed.Talk();
return changed;
}
return animal;
}
< /code>
FirstKindOfTalk(new Animal());Код: Выделить всё
FirstKindOfTalk(new Cat());Код: Выделить всё
FirstKindOfTalk(new Dog());Код: Выделить всё
public static Animal SecondKindOfTalk(Animal animal)
{
var changed = animal;
if (animal.GetType() == typeof(Cat))
{
changed = animal as Cat;
changed.Talk();
return changed;
}
else if (animal.GetType() == typeof(Dog))
{
changed = animal as Dog;
changed.Talk();
return changed;
}
return changed;
}
< /code>
FirstKindOfTalk(new Animal());Код: Выделить всё
FirstKindOfTalk(new Cat());Код: Выделить всё
FirstKindOfTalk(new Dog());Что вызывает такое поведение?>
Подробнее здесь: https://stackoverflow.com/questions/762 ... verride-in
Мобильная версия