Skip to content

Instantly share code, notes, and snippets.

@maximgorbatyuk
Created March 24, 2021 01:42
Show Gist options
  • Save maximgorbatyuk/21ad2b6587658cea0b2600569fe2394d to your computer and use it in GitHub Desktop.
Save maximgorbatyuk/21ad2b6587658cea0b2600569fe2394d to your computer and use it in GitHub Desktop.
class Animal : ICloneable<Animal>
{
public virtual Animal Clone()
{
return new Animal(this);
}
}
// нет переопределения метода
class Dog : Animal
{
}
// Есть переопределение
class Fish : Animal
{
public override Animal Clone()
{
return new Fish(this);
}
}
class Program
{
private static void Main()
{
Animal clone = new Fish().Clone();
// Этот каст работает
Fish fish = (Fish) clone;
Animal cloneDog = new Dog().Clone();
// Этот каст выдаст ошибку, cloneDog - это не класс Dog, а Animal
Dog dog = (Dog) cloneDog;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment