Зачем создавать интерфейс IClone при копировании объектов в C#

Скажите, я попробовал реализацию последнего кода без интерфейса IClone. И у меня все получилось. Код так же само работает. Тогда зачем создавать этот интерфейс???? Если есть причины его вставлять в код, тогда можно будет например заменить этот интерфейс на абстрактный класс. Разницы ведь не будет, мы также укажем там метод, который потом полиморфным методом реализуем в классах наследниках??? Пожалуйста, дайте расширенный ответ.

var tom = new Person("Tom", 23, new Company("Microsoft"));
var bob = (Person)tom.Clone();
bob.Work.Name = "Google";
Console.WriteLine(tom.Work.Name);

class Person : ICloneable
{
    public string Name { get; set; }
    public int Age { get; set; }
    public Company Work { get; set; }
    public Person(string name, int age, Company company)
    {
        Name = name;
        Age = age;
        Work = company;
    }
    public object Clone() => new Person(Name, Age, new Company(Work.Name));
}
class Company
{
    public string Name { get; set; }
    public Company(string name) => Name = name;
}

Ответы (0 шт):