我有:
instance1 = instance2;
Run Code Online (Sandbox Code Playgroud)
如何将它们彼此断开,以便改变一个不会影响另一个?
编辑:我希望他们引用相同的对象(所以我不能克隆),后来 - 不是.但我仍然想要这个类的两个实例 - 所以我不能'空'它们.
谢谢
编辑:
myclass a = new myclass();
a.integer = 1;
myclass b = new myclass();
b.integer = 2;
a = b;
//All changes to one will affect the other, Which is what I want.
//<More lines of the program>
//Now I want 'a' to point to something else than 'b'. and I’m missing the code
//so that the next line will not affect 'b'.
a.integer = 1;
Text = b.integer.ToString();
//I need b.integer to still be = 2, it’s not.
Run Code Online (Sandbox Code Playgroud)
附:
class myclass
{
public int integer;
}
Run Code Online (Sandbox Code Playgroud)
编辑:
这是在答案:@ispiro但是当你说a.integer = 1,你不改变指针,你是以下的指针,并在它的结束更改值. - 戴维8
我曾经以为改变'a'和'a.integer'都是一样的,因为改变它们会改变指针 - 'a'或不会改变指针.但实际上:第一个没有,第二个没有.
感谢大家.
所以在上面的例子中,如果我添加:
a = c;// where c is another instance of 'myclass'.
Run Code Online (Sandbox Code Playgroud)
这将改变"A"点比"B"别的地方.但:
a.integer = 1;
Run Code Online (Sandbox Code Playgroud)
没有.
Dav*_*vy8 28
你的代码:
myclass a = new myclass();
a.integer = 1;
myclass b = new myclass();
b.integer = 2;
a = b;
//here I need code to disconnect them
a.integer = 1;
Text = b.integer.ToString();
//I need b.integer to still be = 2
Run Code Online (Sandbox Code Playgroud)

如果你留下参考:
myclass a = new myclass();
a.integer = 1;
myclass b = new myclass();
b.integer = 2;
var c = a; //Keep the old a around
a = b;
//here I need code to disconnect them
a = c; //Restore it.
a.integer = 1;
Text = b.integer.ToString();
//It's still 2 now.
Run Code Online (Sandbox Code Playgroud)

变量是对象的标签,而不是对象本身.在您的情况下,原始版本a不再具有对它的引用,因此即使它存在,也无法访问它.(并且只要垃圾收集器绕过去除它,它将不复存在,除非有其它参考)
如果它有所帮助,可以这样想,当你说a = b或a = new myclass()你正在移动a指向的线时.当你说a.integer = 1,.有点像跟着线a指向,然后改变目的地.
假设你在一张纸上写下"1600宾夕法尼亚大道".那个地址指的是一所房子,实际上是白宫.
假设你在第二张纸上写下"1600宾夕法尼亚大道".该地址指的是与第一张纸相同的房屋.
你无能为力地改变这两个地址指的是同一个房子这一事实.你可以改变其中一张纸说"123芝麻街",然后他们不再提到同一所房子,但这并没有改变关于白宫的事实,这改变了一张纸的事实.
如果你然后把白宫涂成蓝色,你仍然没有改变任何一张纸; 现在两个都指的是一个蓝色的房子.
你能更详细地解释一下你在这里尝试做什么吗?你的问题很混乱.
| 归档时间: |
|
| 查看次数: |
10302 次 |
| 最近记录: |