static void Main(string[] args) { // shallow copy ValueTypeCloner source = new ValueTypeCloner(1); ValueTypeCloner target = (ValueTypeCloner)source.GetCopy(); Console.WriteLine($"target.Val = {target.Val}"); source.Val = 2; Console.WriteLine($"After change source.Val, target.Val = {target.Val}"); Console.WriteLine(); // shallow copy ReferenceTypeCloner sourceReferenceTypeCloner = new(5); ReferenceTypeCloner targetReferenceTypeCloner = (ReferenceTypeCloner)sourceReferenceTypeCloner.GetCopy(); Console.WriteLine($"targetReferenceTypeCloner.MyContent.Val = " + $"{targetReferenceTypeCloner.MyContent.Val}"); sourceReferenceTypeCloner.MyContent.Val = 2; Console.WriteLine($"After change source.MyContent.Val, " + $"targetReferenceTypeCloner.MyContent.Val = " + $"{targetReferenceTypeCloner.MyContent.Val}"); Console.WriteLine(); // deep copy DeepCopyCloner source1 = new(5); DeepCopyCloner target1 = (DeepCopyCloner)source1.Clone(); Console.WriteLine($"target1.MyContent.Val = " + $"{target1.MyContent.Val}"); source1.MyContent.Val = 2; Console.WriteLine($"After change source1.MyContent.Val, " + $"target1.MyContent.Val = " + $"{target1.MyContent.Val}"); }
public object Clone() { DeepCopyCloner deepCopyCloner = new DeepCopyCloner(MyContent.Val); return(deepCopyCloner); }