是否可以将变量分配给另一个变量,当您更改第二个变量时,更改会向下变为第一个变量?
像这样.
int a = 0;
int b = a;
b = 1;
Run Code Online (Sandbox Code Playgroud)
现在b和a都= 1.
我问这个的原因是因为我有4个我正在跟踪的对象,并且我使用名为currentObject的第5个对象跟踪每个对象,该对象等于用户正在使用的4个对象中的任何一个.但是,我想对currentObject进行一些更改,然后让它成为它所来自的变量的瀑布.
谢谢
Jon*_*eet 17
您需要区分对象,引用和变量.如果你有两个不同的变量(通过方法中的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
Run Code Online (Sandbox Code Playgroud)
如果您对参考类型和对象的工作方式不太满意,您可能希望阅读我的文章.
编辑:我经常使用的一个类比是房子.假设我们有两张纸(变量).相同的房屋地址写在两张纸上(这是每个变量的值,参考).只有一个房子.如果有人用第一张纸来到房子里,然后将门涂成红色,他们就不会改变他们的纸张 - 他们正在改变房子的一些东西.然后,如果有人使用第二张纸进入房子,他们会看到前门也是红色的.只有一个房子,但是很多纸上写着地址.
首先你应该明白你在之前的代码中做了什么
但这不是你想要的,你想要的更像是这样
你所要求的既不好又不可能
但你“应该”要求的是这个
这种方法实际上是完全可以的,它使用指针,指针只是内存中的地址。
注意:要使用指针,您必须在“项目”>“构建”中允许不安全代码
代码如下:
int a = 5;
unsafe //use unsafe around the areas where pointers exist
{
int* b = &a; //create an address named b that refers to a
*b = 1; //change the value of the variable that exists at the address b to 1
//now a = 1
}
Run Code Online (Sandbox Code Playgroud)