Зачем создавать интерфейс 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;
}