【问题标题】:Checking session if empty or not检查会话是否为空
【发布时间】:2011-11-02 15:04:09
【问题描述】:

我想检查会话是否为空或为空,例如:

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
                }

我遇到以下异常:

空引用异常

【问题讨论】:

标签: c# asp.net session nullreferenceexception tostring


【解决方案1】:

如果会话变量 emp_num 将存储一个字符串,则使用它:

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

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

【讨论】:

    【解决方案2】:
    if (HttpContext.Current.Session["emp_num"] != null)
    {
         // code if session is not null
    }
    
    • 如果以上都失败了。

    【讨论】:

      【解决方案3】:

      在尝试将其转换为字符串之前,您需要检查Session["emp_num"] 是否不是null,否则您将收到空引用异常。

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

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

      if (Session["emp_num"] is string)
      {
      }
      

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

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

      【讨论】:

      • 在较新版本的 C# 中,您可以在使用时为变量命名:if (Session["emp_num"] is string myString) { // myString will not be null }
      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

        如果是简单的Session可以申请NULL直接查看Session["emp_num"] != null

        但如果是列表项的会话,那么您需要应用以下任一选项

        选项 1:

        if (((List<int>)(Session["emp_num"])) != null && (List<int>)Session["emp_num"])).Count > 0)
         {
         //Your Logic here
         }
        

        选项 2:

        List<int> val= Session["emp_num"] as List<int>;  //Get the value from Session.
        
        if (val.FirstOrDefault() != null)
         {
         //Your Logic here
         }
        

        【讨论】:

          【解决方案6】:

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

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

          在 C# MVC Version Above 5 中检查会话是否为空。

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2010-12-03
            • 2018-04-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-01-10
            相关资源
            最近更新 更多