zoukankan      html  css  js  c++  java
  • 操作Session存储对象时的一些问题

    前段时间在操作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

  • 相关阅读:
    查找第K小数
    比较奇偶数个数
    哈夫曼树练习
    数字转二进制数练习
    随笔
    字符串反码(练习)
    eclipse构建maven的web项目
    mysql中的一些操作语句,留存
    urllib2功能说明
    Python-第三方库requests详解
  • 原文地址:https://www.cnblogs.com/xinyueBlog/p/6179182.html
Copyright © 2011-2022 走看看