c# 如何复制一个对象,改变原始对象不会改变之前复制的对象呢?
解决时间 2021-03-08 15:29
- 提问者网友:寂寞撕碎了回忆
- 2021-03-08 10:57
比如有一个类Man(其中一个字段是name)
List manList=new List();
然后产生很多个Man实例,放在manList中
然后我建了个Man[] copyMen = new Man[manList.Count];
manList.CopyTo(copyMen,0);(把manList的元素复制给copyMen数组)
最后我对manList中的实例作的字段值作一些改变,比如把name改了
结果是manList和copyMen中都改变了,达不到备份的目的,怎么做才能让copyMen中的对象不随manList的改变而改变呢??
最佳答案
- 五星知识达人网友:大漠
- 2021-03-08 11:20
我说的 可能不对,但是没得到验证, 你的 MAN[ ] 该组 对 LIST<>() 该类泛型 ,应该不是 具备同样的存储多个结构,请查看 相关CSDN api关于数据类型与结构 ,另外完全简单的遍历下 你的 泛型组 存在一个 OBJECT 中即可 ,想要时随时取, 不一定要获取你的 MAN【】 这个东西 ,语句结构 其实都是你在设计,没必要 去抠,你的领导更不会太在意你一个结构代码怎么去写,他要求的更多是 稳定和高效。
全部回答
- 1楼网友:冷風如刀
- 2021-03-08 12:54
那就不要用自带的CopyTo,而自己实现个,每个元素都重新new,并把name重新赋值。
- 2楼网友:北方的南先生
- 2021-03-08 11:48
举个例子在
比如用datagridview拖拽
datagridview1_dragenter事件中
if (e.data.getdatapresent(typeof(int))) 这里选的是int 当然也可以是 string 或其他
{
e.effect = dragdropeffects.copy;
}
然后 mousedown事件中
if (e.button == mousebuttons.left)
{
datagridview dg = new datagridview();
dg = sender as datagridview;
datagridview1.dodragdrop(int.parse(dg.rows[e.rowindex].cells["slotnr"].value.tostring()), dragdropeffects.copy);
} 再鼠标按下时复制!
最后在dragdrop事件中可取得复制的值
if (e.data.getdatapresent(typeof(int)))
{
slotnr= (int)e.data.getdata(typeof(int));
}
然后这里仅仅是取得值如果要把它显示出来还需要
lable1.text=slotnr.tostring();
我要举报
大家都在看
推荐资讯