请教一个C# 结构体直接赋值的问题

surepretty 2014-04-14 02:43:20
比如struct A
{
int a;
int b[100];
}

现在有两个A的对象,A haha =new A();
A hehe =new A();
haha.a =1;
haha.b[0] =10;

现在希望把haha赋值给hehe,
hehe =haha;

是可以做到赋值的,但发现有个问题,就是这样处理相当于是把hehe.b的指针指向了haha.b
如果改了haha.b的内容,hehe.b也会直接被改。

不知道有没有什么办法实现c里类似于memcpy(&hehe,&haha,sizeof(A));

谢谢
...全文
939 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
surepretty 2014-04-14
  • 打赏
  • 举报
回复
版主好神速呀。。谢谢。。。 我也刚写了一个, public object memcpy( object des_obj1, object src_obj2) { byte[] aaa = StructToBytes(des_obj1); IntPtr hPtr = Marshal.UnsafeAddrOfPinnedArrayElement(aaa, 0);//获取字节数组首地址 byte[] bbb = StructToBytes(src_obj2); Marshal.Copy(bbb, 0, hPtr, bbb.Length); des_obj1 = BytesToStuct(aaa, src_obj2.GetType()); return des_obj1; } 好像也能用,不过看您的更精简多了。。用上了哈。。感谢。
feiyun0112 2014-04-14
  • 打赏
  • 举报
回复
hehe =DeepClone(haha);

public static T DeepClone<T>(T obj)
{
using (var ms = new MemoryStream())
{
var formatter = new BinaryFormatter();
formatter.Serialize(ms, obj);
ms.Position = 0;

return (T)formatter.Deserialize(ms);
}
}

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧