public int A { get; private set; }
public Test(int A, int B) {
public Test(Test original, int B) {
return (Test)this.MemberwiseClone();
public Test Clone(int A) {
public override string ToString() {
public static void Main()
var test = new Test(1,2);
Console.WriteLine($"Original {test}\n");
var overridePrivate = test.Clone(A: 66);
Console.WriteLine($"Private prop overriden {overridePrivate}");
Console.WriteLine($"Original did not change {test}\n");
var overrideReadOnly = new Test(test, B: 66);
Console.WriteLine($"ReadOnly prop overriden {overrideReadOnly}");
Console.WriteLine($"Original did not change {test}\n");