代码之家  ›  专栏  ›  技术社区  ›  Vivian River

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

  •  6
  • Vivian River  · 技术社区  · 14 年前

    我习惯于用VB.net进行web编程。

    我经常会有这样的事情:

    Dim s as string = Session("s")
    

    s 从网络会话。如果web会话中没有值,我将得到一个空字符串。

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

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

    有更简单的方法吗?

    3 回复  |  直到 14 年前
        1
  •  16
  •   Philippe Leybaert    14 年前

    这是一种快速的方法:

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

    这将铸造 会话[“s”] 返回一个字符串,如果该字符串不为空,则返回该值。如果为空,则返回空字符串。“那” a ?? b a != null ? a:b " ( ??

    还有一点要记住:您不应该对正常的应用程序逻辑使用异常。

        2
  •  0
  •   ArBR    14 年前

    因为字符串是引用类型,所以可以为空,所以可以通过 string.IsNullOrEmpty(s) :

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

    否则(作为 菲利普·莱伯特 说)你可以用??接线员。

        3
  •  -3
  •   Thomas Weller    14 年前

    我几乎同意Philippe的观点,但它只在会话中出现“s”时才起作用,否则将出现KeyNotFoundException。这段代码检查它,但不能解决Philippe的空问题。

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

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

    这并不能让它变得更容易,但是性能应该比捕获异常要好。