有谁知道obj=(Obj)Session["OBJ"];是如何工作的吗?

agiler_charming 2003-10-17 03:59:01
有谁知道obj=(Obj)Session["OBJ"];是如何工作的吗?

比如有Object obj
obj=(Object)Session["OBJ"];是传递引用还是克隆对象到obj里?

因为我碰到如下代码才迷惑:
obj=(Object)Session["OBJ"];
Session.Remove("OBJ");
obj.DoSomeThing();

Session条目移除后,obj对象还有效,obj.DoSomeThing()还可以正常掉用
或者是Session的Remove()并没有清除对象,那Session.Remove()到底做了些什么呢?
...全文
39 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
henryfan1 2003-11-12
  • 打赏
  • 举报
回复
看下内存分配的栈和堆。


jimcharles 2003-11-12
  • 打赏
  • 举报
回复
Session.Remove()只是把名为"OBJ"的Session对象从Session队列里删掉。
obj=(Object)Session["OBJ"];已经把名为"OBJ"的Session对象出箱到了obj里面,obj并不会收到Session.Remove()的影响,具体的概念可以参看C#的装箱出箱的章节~
agiler_charming 2003-10-22
  • 打赏
  • 举报
回复
下面的代码没有出错:
obj=(Object)Session["OBJ"];
Session.Remove("OBJ");
obj.DoSomeThing();

但:在Session.Remove("OBJ");后使用obj安全吗?
agiler_charming 2003-10-22
  • 打赏
  • 举报
回复
up
agiler_charming 2003-10-17
  • 打赏
  • 举报
回复
据我试验
obj=(Object)Session["OBJ"];是传递引用给obj
但Session.Remove("OBJ");并没有清除对象,只是删除了在Session里的条目
我想要靠垃圾收集器来清除吧?

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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