gpt4 book ai didi

c# - 将变量分配给另一个变量并将一个变量的更改反射(reflect)到另一个变量中

转载 作者:太空狗 更新时间:2023-10-29 22:11:03 24 4
gpt4 key购买 nike

是否可以将一个变量分配给另一个变量,并且当您更改第二个变量时,更改会下降到第一个变量?

像这样。

int a = 0;
int b = a;
b = 1;

现在 b 和 a 都将 = 1。

我问这个的原因是因为我有 4 个我正在跟踪的对象,并且我使用名为 currentObject 的第 5 个对象跟踪每个对象,该对象等于用户正在使用的 4 个对象中的任何一个。但是,我只想对 currentObject 进行更改,并使其瀑布流到它来自的变量。

谢谢

最佳答案

您需要区分对象引用变量。如果您有两个不同的变量(它们没有通过方法中的 ref/out 别名等),那么它们将是独立的。

但是,如果两个变量引用同一个对象(即它们的类型是一个类,并且它们的是相同的引用),那么对该对象的任何更改都会通过任一变量可见。听起来这就是您想要实现的目标。例如:

public class SomeMutableClass
{
public string Name { get; set; }
}

// Two independent variables which have the same value
SomeMutableClass x1 = new SomeMutableClass();
SomeMutableClass x2 = x1;

// This doesn't change the value of x1; it changes the
// Name property of the object that x1's value refers to
x1.Name = "Fred";
// The change is visible *via* x2's value.
Console.WriteLine(x2.Name); // Fred

如果您不完全了解引用类型和对象的工作方式,您可能希望阅读我的 article about them .

编辑:我经常使用的一个比喻是房子。假设我们有两张纸(变量)。两张纸上都写着相同的房屋地址(即每个变量的引用)。只有一所房子。如果有人使用第一张纸到达房子,然后将门漆成红色,那么他们并没有改变纸上的任何东西 - 他们正在改变房子的某些东西。然后,如果有人使用第二张 纸去房子,他们会看到前门也是红色的。房子只有一栋,但是很多张纸上都写着地址。

关于c# - 将变量分配给另一个变量并将一个变量的更改反射(reflect)到另一个变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10604136/

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