我想检查会话是空还是空,即这样的事情:
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
}
我面临以下例外:
空引用异常
答案 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
}