C# 我的对象是复制的内存还是指向原始对象的指针';什么是记忆?
对不起,如果这个问题看起来很奇怪,我不知道该怎么说。因此,我不确定以前是否有人问过这个问题 以这段代码为例:C# 我的对象是复制的内存还是指向原始对象的指针';什么是记忆?,c#,oop,memory-management,C#,Oop,Memory Management,对不起,如果这个问题看起来很奇怪,我不知道该怎么说。因此,我不确定以前是否有人问过这个问题 以这段代码为例: Object obj = new Object(); Object obj2; obj2 = obj; 所以我的问题是: 当我将obj分配给obj2时,obj2是指向obj的内存,还是运行时正在分配与obj的内存相同的新内存块 谢谢,罗。obj2引用了obj指向的同一对象。由于它们指向同一对象,因此对obj2的修改“反映”在obj中 obj2引用的对象与ob
Object obj = new Object();
Object obj2;
obj2 = obj;
所以我的问题是:
当我将obj
分配给obj2
时,obj2
是指向obj
的内存,还是运行时正在分配与obj
的内存相同的新内存块
谢谢,罗。
obj2
引用了obj
指向的同一对象。由于它们指向同一对象,因此对obj2
的修改“反映”在obj
中 obj2
引用的对象与obj
指向的对象相同。由于它们指向同一对象,因此对obj2
的修改“反映”在obj
中 这里有一个简单的例子来说明它是一个参考,而不是一个副本
public class ClassObject
{
public int entier;
public ClassObject(int p_Initial)
{
this.entier = p_Initial;
}
}
ClassObject obj1 = new ClassObject(2);
Console.WriteLine(obj1.entier); ==> Console obj1.entier = 2
ClassObject obj2 = obj1;
obj2.entier = 5;
Console.WriteLine(obj1.entier); ==> Console obj1.entier = 5
Console.WriteLine(obj2.entier); ==> Console obj2.entier = 5
这里有一个简单的例子来说明它是一个参考,而不是一个副本
public class ClassObject
{
public int entier;
public ClassObject(int p_Initial)
{
this.entier = p_Initial;
}
}
ClassObject obj1 = new ClassObject(2);
Console.WriteLine(obj1.entier); ==> Console obj1.entier = 2
ClassObject obj2 = obj1;
obj2.entier = 5;
Console.WriteLine(obj1.entier); ==> Console obj1.entier = 5
Console.WriteLine(obj2.entier); ==> Console obj2.entier = 5
谢谢,这是我一直在寻找的答案。谢谢,这是我一直在寻找的答案。如果你想在C#中创建一个对象的副本,你可以使用IClonable接口du namespace System.object的实现如果你想在C#中创建一个对象的副本,你可以使用IClonable接口du namespace System.object的实现