Две операции, которые вы демонстрируете, делают разные вещи.Какой из них вам нужен, зависит от того, что вы хотите сделать.
Этот не создает копию / клон объекта:
Typist typistCopy = typist;
Все, что он создаетновая переменная , которая ссылается на тот же объект в памяти.После выполнения этой строки кода у вас остается только один Typist
объект.У вас просто есть две переменные, ссылающиеся на него.Любые изменения, внесенные в одну переменную, будут отражены в обеих, поскольку они оба ссылаются на один и тот же объект.
С другой стороны, это создает копию или клон изобъект:
Typist typistCopy = (Typist)typist.Clone();
(или, по крайней мере, позволяет самому объекту решать, нужна ли копия / клон, и выполняет собственную инкапсулированную логику относительно того, что это означает для объекта.)
После выполнения этой строки кода у вас теперь есть два Typist
объектов, которые можно использовать и манипулировать независимо друг от друга.Любые изменения, внесенные в одну переменную, не будут отражены в другой, поскольку они ссылаются на разные объекты.