前段时间在操作Session存储的对象时,遇到了类似以下的这种情况:
User user=new User("张三"); //创建一个姓名为“张三”的User对象 Session["user"]=user; //存入session User user1=Session["user"] as User; //获取session中的user对象 user.name=""; //设置user的name属性为空 User user2=Session["user"] as User; //再次获取user context.Response.Write(user2.name);
本以为得到的结果是“张三”,但实际的结果却是“”。
为什么会出现这种情况呢?
原因是Session中的存储对象,只保存对象值和内部引用对象的地址,如果对象发生变化,则Session也发生变化。
遇到这种情况如何解决呢?
如果我们想让Session中的对象不受影响,可以使对象序列化,实现深拷贝。
什么是深拷贝以及如何实现深拷贝呢?
点下链接,你就知道:http://www.cnblogs.com/xinyueBlog/p/6179096.html