C#将一个对象的值赋给另一个对象

2025-02-24 03:48:10
推荐回答(4个)
回答1:

两个对象是NEW出来的吗?还是只New一个,另一个是object2=object1,就会存在这个问题!

你这两个对象都要单独new(实例化)才是相当于两个对象,如果不是,而是下面这样的话
object object1=new object1();
object object2=object1;
其实object2和object1指的是同一个对象。。所以,你怎么改变都会引起另一个改变。。不知你是不是这种情况!

回答2:

一种就是做成struct,赋值的时候会自动clone一份

另一种就是你自己要负责写一个车Clone函数,新建一个对象然后把属性都复制过来,赋值的时候调用obj.Clone()就是一个新的对象了

回答3:

这个就涉及到C#中的深拷贝与浅拷贝,给你一个示例吧:
///


/// 深拷贝接口
///

interface IDeepCopy
{
object DeepCopy();
}
///
/// 浅拷贝接口
///

interface IShallowCopy
{
object ShallowCopy();
}
///
/// 教室信息
///

class ClassRoom : IDeepCopy, IShallowCopy
{
publicint RoomID =1;
publicstring RoomName ="Room1";
publicoverridestring ToString()
{
return"RoomID="+ RoomID +"\tRoomName="+ RoomName;
}
publicobject DeepCopy()
{
ClassRoom r =new ClassRoom();
r.RoomID =this.RoomID;
r.RoomName =this.RoomName;
return r;
}
publicobject ShallowCopy()
{
//直接使用内置的浅拷贝方法返回
returnthis.MemberwiseClone();
}
}

回答4:

object是引用对象,如果直接赋值传的是引用地址,改变的话肯定是两个都改变.