首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在C#中确定会话变量为null或空的最佳方法是什么?

在C#中确定会话变量为null或空的最佳方法是什么?
EN

Stack Overflow用户
提问于 2008-10-24 19:33:00
回答 11查看 160.8K关注 0票数 79

检查ASP.NET C#中是否存在会话变量的最佳方法是什么?

我喜欢对字符串使用String.IsNullOrEmpty() works,不知道对Session是否有类似的方法。目前我所知道的唯一方法是:

代码语言:javascript
复制
 var session;
 if (Session["variable"] != null)
 {
     session = Session["variable"].ToString();
 }
 else
 {
     session = "set this";
     Session["variable"] = session;
 }
EN

回答 11

Stack Overflow用户

发布于 2008-10-24 19:37:44

这几乎就是你所做的。但是,您可以使用一种更短的语法。

代码语言:javascript
复制
sSession = (string)Session["variable"] ?? "set this";

这就是说,如果会话变量为空,则将sSession设置为"set this“

票数 18
EN

Stack Overflow用户

发布于 2008-10-24 19:59:42

将它包装在一个属性中可能会让事情变得更优雅。

代码语言:javascript
复制
string MySessionVar
{
   get{
      return Session["MySessionVar"] ?? String.Empty;
   }
   set{
      Session["MySessionVar"] = value;
   }
}

然后,您可以将其视为字符串。

代码语言:javascript
复制
if( String.IsNullOrEmpty( MySessionVar ) )
{
   // do something
}
票数 14
EN

Stack Overflow用户

发布于 2008-10-24 21:00:24

c# 3.0中的“as”表示法非常简洁。由于所有会话变量都是可以为空的对象,因此这允许您获取值并将其放入您自己的类型化变量中,而无需担心抛出异常。大多数对象都可以这样处理。

代码语言:javascript
复制
string mySessionVar = Session["mySessionVar"] as string;

我的概念是,您应该将会话变量放入局部变量中,然后适当地处理它们。始终假设您的会话变量可以为空,并且永远不要将它们强制转换为不可为空的类型。

如果您需要一个不可为空的类型化变量,那么您可以使用TryParse来获得它。

代码语言:javascript
复制
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;
}
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/234973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档