2013-04-03 96 views
3

我在某人的代碼中發現以下幾點:異常的ToString()方法

catch (Exception exception) 
{ 
    Console.WriteLine(exception.ToString()); 
} 

ReSharper的是灰化顯示ToString()調用,它是始終是一個偉大的建議。 這個C#代碼如何在沒有它的情況下工作?將ToString()隱式調用?

+1

您未顯示相關代碼。 – ChaosPandion

+0

取決於你在做什麼。如果它用在string.Format(0或字符串連接 - 那麼是的,當然 –

+2

-1現在:請發佈實際代碼/通過編譯代碼簡化。 –

回答

5

如果在字符串中使用了例外...例如"something" + exception.ToString()String.Format("... {0}", exception),則會調用ToString而不必顯式調用它。

And ...當你更新你的例子,調用Console.WriteLine()針對任何對象值,ToString將被調用。 Here's the documentation,儘可能詳細的,你可能想要的。

3

我假定某些東西是字符串連接或用作格式化字符串中的參數,那麼是的,ToString被隱式調用。

UPDATE以下問題UPDATE

控制檯有一個接受object參數,在這個版本的toString方法被調用的WriteLine過載如果傳遞的實例不爲空 - R#爲意識到這一點,建議選擇更好的過載。