using System;
using System.Globalization;
using System.Linq;
using System.Collections.Generic;
public class Test
{
public class Class1
{
public Class1(string name)
{
this._name = name;
}
private string _name = "";
public string Name { get { return _name; } set { _name = value; } }
}
public class Class2
{
public Class2(Class1 c1)
{
this._c1 = c1;
}
private Class1 _c1;
public Class1 C1 { get { return _c1; } }
}
public static void Main()
{
Class1 myMutableVariable = new Class1("c1name");
Class2 c2 = new Class2(myMutableVariable);
myMutableVariable.Name = "test";
//c2.C1 remains 'c1name'
Console.WriteLine(c2.C1.Name); // no, it will be "test"
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uR2xvYmFsaXphdGlvbjsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwoKcHVibGljIGNsYXNzIFRlc3QKewogICAgcHVibGljIGNsYXNzIENsYXNzMQoJewoJICAgIHB1YmxpYyBDbGFzczEoc3RyaW5nIG5hbWUpCgkgICAgewoJICAgICAgICB0aGlzLl9uYW1lID0gbmFtZTsKCSAgICB9CgkKCSAgICBwcml2YXRlIHN0cmluZyBfbmFtZSA9ICIiOwoJICAgIHB1YmxpYyBzdHJpbmcgTmFtZSB7IGdldCB7IHJldHVybiBfbmFtZTsgfSBzZXQgeyBfbmFtZSA9IHZhbHVlOyB9IH0KCX0KCQoJcHVibGljIGNsYXNzIENsYXNzMgoJewoJICAgIHB1YmxpYyBDbGFzczIoQ2xhc3MxIGMxKQoJICAgIHsKCSAgICAgICAgdGhpcy5fYzEgPSBjMTsKCSAgICB9CgkKCSAgICBwcml2YXRlIENsYXNzMSBfYzE7CgkgICAgcHVibGljIENsYXNzMSBDMSB7IGdldCB7IHJldHVybiBfYzE7IH0gfQoJfQoKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKICAgICAgICBDbGFzczEgbXlNdXRhYmxlVmFyaWFibGUgPSBuZXcgQ2xhc3MxKCJjMW5hbWUiKTsKICAgICAgICBDbGFzczIgYzIgPSBuZXcgQ2xhc3MyKG15TXV0YWJsZVZhcmlhYmxlKTsKICAgICAgICBteU11dGFibGVWYXJpYWJsZS5OYW1lID0gInRlc3QiOwogICAgICAgIC8vYzIuQzEgcmVtYWlucyAnYzFuYW1lJwogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKGMyLkMxLk5hbWUpOyAgLy8gbm8sIGl0IHdpbGwgYmUgInRlc3QiCgl9Cn0=