When I change the value of a variable which is a copy of another, it changes the original variable also

后端 未结 2 967
悲哀的现实
悲哀的现实 2021-01-13 12:04
public class TestClass
{
    public int TestNumber;
    public string TestName;

    public TestClass(string name, int number)
    {
        TestName   = name;
              


        
2条回答
  •  时光说笑
    2021-01-13 12:29

    Here is your problem:

    Var1=new TestClass("Me",1);
    Var2 = Var1;
    Var2.TestName="aaa";
    

    Var2 = Var1; is actually a reference copy! This means that the Var2 will take the address of Var1 and no matter what you modify in either of them, it will be visible in the other. To get that, I would recommend using a copy of Var2. To do so, create a method in your testClass class.

    public testClass copy()
    {
        testClass tC = new testClass(this.TestNumber, this.TestName);
        return tC;
    }
    

    Now you can assign the value like this: Var2 = Var1.copy();

提交回复
热议问题