如何在C#中将空会话值默认为空字符串

时间:2010-10-20 20:00:34

标签: c# asp.net session session-variables

我习惯使用VB.net进行网页编程。

通常,我有类似的东西:

Dim s as string = Session("s")

我从网络会话中获取s的字符串值。如果网络会话中没有值,我会得到一个空白字符串。

然而,AFAIK,在C#中,我必须有类似下面代码的东西来做同样的事情。

string s;
try { s = Session["s"].ToString(); }
catch { s = ""; }

有更简单的方法吗?

3 个答案:

答案 0 :(得分:15)

这是一种快速的方法:

s = (string)Session["s"] ?? "";

这会将 Session [“s”] 强制转换为字符串,如果不为null,则返回该值。如果为null,则返回空字符串。 “a ?? b”表达式与“a != null ? a:b”基本相同(但 ?? 更有效地编译)

要记住的其他事项:您不应该对正常的应用程序逻辑使用异常。

答案 1 :(得分:0)

因为string是引用类型,所以可以为空,所以你可以通过 string.IsNullOrEmpty(s)检查空或null:

string s = string.IsNullOrEmpty((string)strObject) ? string.Empty : strObject.ToString();

否则(如 Philippe Leybaert 所说)你可以使用??运营商。

答案 2 :(得分:-3)

我几乎同意Philippe,但只有在会话中出现“s”时才有效,否则会出现KeyNotFoundException。此代码检查它,但不解决Philippe的NULL问题。

s= Session.ContainsKey("s")?Session["s"]:"";

因此,为了涵盖这两种可能性,它变得复杂:

s = Session.ContainsKey("s")?(Session["s"]??""):"";

它并没有真正使它变得更容易,但性能应该比捕获异常更好。