最近,项目中用到dictionary<string,object>格式来处理数据,当前有一个字典resultData,用来返回页面的所有值,后续对这个字典进行了增加操作,如图:
并最终返回页面。
由于我在另外一个页面需要用到第一步获取到的resultData值,因此,我进行了如下操作
Dictionary<string,object> temp=resultData;
但是当我进行操作时,temp的值为包含全部数据的resultData(也就是返回页面的数据)
解析:
分析知道Dictionary属于引用类型,引用类型在赋值时,如果直接赋值,则是将对象的地址进行了赋值,而非值,因此我们需要用如下方法进行赋值操作。
Dictionary<string,object> dicItems=new Dictionary<string,object>(resultData);
此时,我们将先将resultData的值赋值给dicItems,无论后续在对resultData 进行何种操作,都将不会影像dicItems的值。
因此我们需要注意:
引用类型直接赋值的话,得到的是对原对象指向的地址,而并非原对象的值,此时,不论对原对象还是新对象操作,都将影像该地址下的值,使得原对象与新对象的值发生变化。