检查会话是否为空

时间:2011-08-24 09:01:53

标签: c# asp.net session nullreferenceexception tostring

我想检查会话是空还是空,即这样的事情:

if(Session["emp_num"] != null)
{

   if (!string.IsNullOrEmpty(Session["emp_num"].ToString()))
            {
                //The code
            }
}

或者只是

 if(Session["emp_num"] != null)
    {

       // The code
    }

因为有时我只检查:

       if (!string.IsNullOrEmpty(Session["emp_num"].ToString()))
                {
                    //The code
                }

我面临以下例外:

  

空引用异常

6 个答案:

答案 0 :(得分:51)

如果会话变量emp_num将存储字符串,请使用此选项:

 if (!string.IsNullOrEmpty(Session["emp_num"] as string))
 {
                //The code
 }

如果它不存储字符串,而是存储其他类型,则应在访问该值之前检查null,如第二个示例所示。

答案 1 :(得分:10)

if (HttpContext.Current.Session["emp_num"] != null)
{
     // code if session is not null
}
  • 如果以上都失败了。

答案 2 :(得分:5)

在尝试将Session["emp_num"]转换为字符串之前,您需要检查null是否为if (Session["emp_num"] is string) { } ,否则您将获得空引用异常。

我会选择你的第一个例子 - 但你可以让它更“优雅”。

有几种方法,但想到的是:

if (!string.IsNullOrEmpty(Session["emp_num"] as string))
{
}

{{1}}

如果变量不存在或者不是字符串,则返回null。

答案 3 :(得分:2)

您应首先检查会话中是否存在Session["emp_num"]

您可以询问会话对象其索引器是否具有emp_num值或使用string.IsNullOrEmpty(Session["emp_num"])

答案 4 :(得分:0)

如果是简单的Seesion,则可以使用Null进行if(Session["Session_name"] !=null)检查

但是如果它是列表的会话,则需要应用1或2

选项1:

    if (((List<int>)(Session["Session_name"])) != null && 
       (List<int>)Session["Session_name"])).Count > 0)

选项2:

List<int> val= Session["Session_name"] as List<int>`;`//Get the value`
if (val.FirstOrDefault() != null)

答案 5 :(得分:0)

  

检查在C#MVC版本低于5的会话中是否为空。

if (!string.IsNullOrEmpty(Session["emp_num"] as string))
{
    //cast it and use it
    //business logic
}
  

在5以上的C#MVC版本中,检查会话是否为空。

if(Session["emp_num"] != null)
{
    //cast it and use it
    //business logic
}