当我执行以下操作时,会出现错误:
if(Session["value"] != null)
{
// code
}
我遇到的错误是:
对象引用未设置为对象的实例。
为什么会这样?我总是用这种方式检查我的session。我正在使用MVC框架,这是否与此有关?
编辑:
该代码位于控制器的构造函数中:
public class MyController : ControllerBase
{
private int mVar;
public MyController()
{
if (Session["value"] != null)
{
mVar= (int)Session["value"];
}
}
}
var myvar = Session["value"]; if(myvar != null)...
,因为if (Session["value"] != null)
也可以正常运行。我也不会担心获取Session["value"]
两次(一次用于 != null,一次用于设置变量),因为优化器应该会处理这个问题。注意:你可能会发现 ?? 操作符 很有用:mVar= (int)Session["value"] ?? 0;
。这将无法解决此线程讨论的空 Session 问题(因为它没有检查 Session 而是检查了来自 Session 的值)。 - Trisped