我正在为一个会话分配一个RadTreeNode对象(我从调试器检查该会话不为null)。然后我尝试使用以下代码将其强制转换回RadTreeNode对象。
RadTreeNode node = new RadTreeNode();
node = (RadTreeNode)Session["nextNode"] as RadTreeNode;
但节点变量仍然为null。有什么建议吗?
答案 0 :(得分:0)
Session [“nextNode”]很可能是空的,正如@Richard在评论中所说的那样。
如果源对象未转换为目标类型,则“as”强制转换as RadTreeNode
将产生空值。前缀cast (RadTreeNode)
以引用类型为目标,并且在as RadTreeNode
强制转换失败时不会抛出异常。
你正在为RadTreeNode投射一个空值,你得到了你应该得到的东西......一个RadTreeNode的空引用。
会话通常很糟糕,应该尽可能避免。我的猜测是你期望Session表现一种方式而不是一种方式。
例如,RadTreeNode
是否可序列化?已经有一段时间了,所以我不记得Session如何处理序列化/反序列化对象,但我猜它会吃掉与序列化相关的任何异常。无可否认地猜测。