当我更改作为另一个副本的变量的值时,它也会更改原始变量

For*_*zan 5 c# variables class

public class TestClass
{
    public int TestNumber;
    public string TestName;

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

public class AnotherClass
{  
    TestClass Var1, Var2;

    void Start()
    {
         Var1 = new TestClass("Me", 1);
         Var2 = Var1;
         Var2.TestName = "aaa";
    }
}
Run Code Online (Sandbox Code Playgroud)

当我调试Var1.TestName我得到的值时,"aaa"但最初它是"Me". 如何将每个 var 分开但仍然Var2从 中获取其初始值Var1

Sim*_* Me 6

这是你的问题:

Var1=new TestClass("Me",1);
Var2 = Var1;
Var2.TestName="aaa";
Run Code Online (Sandbox Code Playgroud)

Var2 = Var1;实际上是参考副本!这意味着Var2将采用地址Var1,无论您在其中一个中修改什么,它都将在另一个中可见。为此,我建议使用Var2. 为此,请在您的testClass类中创建一个方法。

public testClass copy()
{
    testClass tC = new testClass(this.TestNumber, this.TestName);
    return tC;
}
Run Code Online (Sandbox Code Playgroud)

现在您可以像这样分配值:Var2 = Var1.copy();