C#中“”“和”ex“中的”“”是什么意思?

时间:2017-06-22 14:48:27

标签: c#

我是C#的新手,我总是使用它,但不明白它在做什么。

catch (Exception ex)
    {
        return "" + ex;

    }
    return "Name : " + result;

当我将鼠标悬停在它上面时,它表示“将文本表示为一系列Unicode字符”。我知道它与代码的最后一行有关,但为什么它之前是“”“。

我见过string = string + int: What's behind the scenes?谈论"" + 1(或一般“String + object”)的类似外观。在我的情况下,ex显然不是int,因此这不是该问题的重复。

3 个答案:

答案 0 :(得分:5)

引号仅表示字符串文字。在这里,"" + ex只是错误的代码 - 通过将ex与空字符串("")连接来创建字符串。它相当于:

return ex?.ToString();

除非""为空,否则它将返回ex ...所以也许:

return ex == null ? "" : ex.ToString();

答案 1 :(得分:3)

""是一个空字符串。 "" + ex是一种反模式,可强制ex转换为字符串,并提供异常消息。

基本上,不是创建两个字符串并连接它们(导致创建第三个字符串),而是更好:

return ex?.ToString();

由于它是一个异常处理程序,并且你知道ex不能为null,这也会这样做:

return ex.ToString();

答案 2 :(得分:3)

它在C#和Java等语言中是惯用的。使用任何字符串文字进行前缀(并且""具有最良性的效果)将二进制加法运算符+置于一种连接“字符串模式”,因此强制调用ToString异常对象。

真的很可爱,虽然return ex.ToString();可能不那么迟钝了。