Допустим, у меня есть некоторый пользовательский тип:
public class MyClass
{
public int Age;
}
Согласно документации MS здесь , все классы в. NET являются производными от Object, и каждый метод, определенный в Класс объекта доступен во всех объектах в системе
Поскольку Object.MemberwiseClone () является частью класса объекта, поэтому я не могу сделать поверхностное копирование, просто вызвав его экземпляр формы в моем пользовательском классе, например «Equals». (), GetHashCode () и т. Д. c? Почему я не могу сделать что-то вроде этого:
class Program
{
static void Main(string[] args)
{
MyClass myClass = new MyClass();
MyClass myClassCopy = (MyClass)myClass.MemberwiseClone(); //Not working!
}
}
Вместо этого во всех примерах, которые я вижу, мне нужно реализовать метод поверхностного копирования явно вроде:
public class MyClass
{
public int Age;
public MyClass ShallowCopy()
{
return (MyClass)MemberwiseClone();
}
}
И только тогда я могу вызвать этот метод ShallowCopy ().
[EDIT]
Я думаю, что этот вопрос здесь объясняется суть: Почему MemberwiseClone определен в System.Object защищен? Мне нужно было спросить, в чем причина того, чтобы Object.MemberwiseClone () был закрытым, и основная причина: Проблема здесь в том, что MemberwiseClone просто слепой полицейский это государство. Во многих случаях это нежелательно