检查ASP.NET C#中是否存在会话变量的最佳方法是什么?
我喜欢对字符串使用String.IsNullOrEmpty()
works,不知道对Session
是否有类似的方法。目前我所知道的唯一方法是:
var session;
if (Session["variable"] != null)
{
session = Session["variable"].ToString();
}
else
{
session = "set this";
Session["variable"] = session;
}
发布于 2008-10-24 19:37:44
这几乎就是你所做的。但是,您可以使用一种更短的语法。
sSession = (string)Session["variable"] ?? "set this";
这就是说,如果会话变量为空,则将sSession设置为"set this“
发布于 2008-10-24 19:59:42
将它包装在一个属性中可能会让事情变得更优雅。
string MySessionVar
{
get{
return Session["MySessionVar"] ?? String.Empty;
}
set{
Session["MySessionVar"] = value;
}
}
然后,您可以将其视为字符串。
if( String.IsNullOrEmpty( MySessionVar ) )
{
// do something
}
发布于 2008-10-24 21:00:24
c# 3.0中的“as”表示法非常简洁。由于所有会话变量都是可以为空的对象,因此这允许您获取值并将其放入您自己的类型化变量中,而无需担心抛出异常。大多数对象都可以这样处理。
string mySessionVar = Session["mySessionVar"] as string;
我的概念是,您应该将会话变量放入局部变量中,然后适当地处理它们。始终假设您的会话变量可以为空,并且永远不要将它们强制转换为不可为空的类型。
如果您需要一个不可为空的类型化变量,那么您可以使用TryParse来获得它。
int mySessionInt;
if (!int.TryParse(mySessionVar, out mySessionInt)){
// handle the case where your session variable did not parse into the expected type
// e.g. mySessionInt = 0;
}
https://stackoverflow.com/questions/234973
复制相似问题