我在某些代码中找到了以下代码:
catch (Exception exception)
{
Console.WriteLine(exception.ToString());
}
Resharper正在淘汰ToString()
电话,这一直是一个很好的建议。
没有它,这个C#代码如何工作?会隐式调用ToString()
吗?
答案 0 :(得分:7)
Console.WriteLine has an overload。此对象的ToString
方法在内部调用,因此您无需首先添加ToString
。
答案 1 :(得分:5)
如果在字符串中使用了例外...例如"something" + exception.ToString()
或String.Format("... {0}", exception)
,则是,ToString
将被调用,而无需您明确地调用它。
并且......当您更新示例时,针对任何对象值调用Console.WriteLine()
,将调用ToString
。 Here's the documentation,尽可能详细地提供详细信息。
答案 2 :(得分:3)
我假设某些内容是字符串连接或用作格式化字符串中的参数,然后是,隐式调用ToString
。
更新问题更新
Console有一个WriteLine的重载,它接受一个object
参数,在这个版本中,如果传递的实例不为null,则调用ToString - R#意识到这一点并建议选择优先的重载