我是C#的新手,我总是使用它,但不明白它在做什么。
catch (Exception ex)
{
return "" + ex;
}
return "Name : " + result;
当我将鼠标悬停在它上面时,它表示“将文本表示为一系列Unicode字符”。我知道它与代码的最后一行有关,但为什么它之前是“”“。
我见过string = string + int: What's behind the scenes?谈论"" + 1
(或一般“String + object”)的类似外观。在我的情况下,ex
显然不是int
,因此这不是该问题的重复。
答案 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();
可能不那么迟钝了。