C#将一个对象的值赋给另一个对象
两个对象,object1,object2怎么样将object1中的值赋给object2,而且,赋值后,改变object1的值,object2的值不变速度,求大神!急用!!...
两个对象,object1,object2
怎么样将object1中的值赋给object2,
而且,赋值后,改变object1的值,object2的值不变
速度,求大神!急用!!!!!!!1 展开
怎么样将object1中的值赋给object2,
而且,赋值后,改变object1的值,object2的值不变
速度,求大神!急用!!!!!!!1 展开
4个回答
展开全部
一种就是做成struct,赋值的时候会自动clone一份
另一种就是你自己要负责写一个车Clone函数,新建一个对象然后把属性都复制过来,赋值的时候调用obj.Clone()就是一个新的对象了
另一种就是你自己要负责写一个车Clone函数,新建一个对象然后把属性都复制过来,赋值的时候调用obj.Clone()就是一个新的对象了
追问
亲,这个克隆函数怎么写啊,如果是List,而且Person里有n多个属性,我还要一个一个的去敲这些属性么
追答
当然了,不然就要用反射
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个就涉及到C#中的深拷贝与浅拷贝,给你一个示例吧:
///<summary>
/// 深拷贝接口
///</summary>
interface IDeepCopy
{
object DeepCopy();
}
///<summary>
/// 浅拷贝接口
///</summary>
interface IShallowCopy
{
object ShallowCopy();
}
///<summary>
/// 教室信息
///</summary>
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();
}
}
///<summary>
/// 深拷贝接口
///</summary>
interface IDeepCopy
{
object DeepCopy();
}
///<summary>
/// 浅拷贝接口
///</summary>
interface IShallowCopy
{
object ShallowCopy();
}
///<summary>
/// 教室信息
///</summary>
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();
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
object是引用对象,如果直接赋值传的是引用地址,改变的话肯定是两个都改变.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询