gpt4 book ai didi

c# - 当我更改一个变量的值时,它是另一个变量的副本,它也会更改原始变量

转载 作者:行者123 更新时间:2023-11-30 16:50:12 24 4
gpt4 key购买 nike

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";
}
}

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

最佳答案

这是你的问题:

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

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

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

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

关于c# - 当我更改一个变量的值时,它是另一个变量的副本,它也会更改原始变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35395500/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com