public class TestRefClass{
public TestRefClass ShallowCopy()
return (TestRefClass) this.MemberwiseClone();
public static void Main()
var myClasswithClone = new TestRefClass(){i = 1};
Console.WriteLine($"myClasswithClone.i: {myClasswithClone.i}");
modifywithclone(myClasswithClone);
Console.WriteLine($"myClasswithClone.i: {myClasswithClone.i}");
var myClassNoClone = new TestRefClass(){i = 1};
Console.WriteLine($"myClassNoClone.i: {myClassNoClone.i}");
modifynoclone(myClassNoClone);
Console.WriteLine($"myClassNoClone.i: {myClassNoClone.i}");
private static int modifywithclone(TestRefClass tobechanged)
TestRefClass mylocal = tobechanged.ShallowCopy();
private static int modifynoclone(TestRefClass tobechanged)