How to make clone of class instance?

c#, constructor, instance, oop

Solution

Normally, one would write a copy constructor for this:

public Test(Test other)
{
     field1 = other.field1;
     field2 = other.field2;
}

If you want, you can also add a Clone method now:

public Test Clone()
{
     return new Test(this);
}

Going even further, you could have your class implement `ICloneable`. This is the default interface a class should implement if it supports cloning of itself.

Problem

So I have this class: ``` class Test { private int field1; private int field2; public Test() { field1 = // some code that needs field2 = // a lot of cpu time } private Test GetClone() { Test clone = // what do i have to write there to get Test instance // without executing Test class' constructor that takes // a lot of cpu time? clone.field1 = field1; clone.field2 = field2; return clone; } } ``` The code pretty much explains itself. I tried to solve that and came up with this: ``` private Test(bool qwerty) {} private Test GetClone() { Test clone = new Test(true); clone.field1 = field1; clone.field2 = field2; return clone; } ``` I havent tested it out though, but am I doing it right? Is there better way to do that?

Original source