2012-11-26 33 views

回答

1

我不知道任何約定。我通常會在文本上打印出合適的內容。 Id可能並不適合您的情況。

我的經驗法則是,ToString應該顯示兩個對象是否爲Equals

1

據我所知,ToString()的約定與對象上的其他2個可重寫方法的約定固有地聯繫在一起 - GetHashCodeEquals

也就是說,當Equals返回true時,應該由GetHashCode生成相同的散列碼。爲了補充一點,我想說當Equals返回true時,ToString應該返回相同的字符串。

5

做你需要做的。沒有慣例,因爲當覆蓋.Equals().GetHashCode()之類的東西時是有的。

如果要在執行期間中斷時影響調試器中顯示的內容,請不要使用ToString() - 使用DebuggerDisplayAttribute

1

我相信ToString()實施應該記住三兩件事:

  • 字符串表示應該是人類,例如可讀您可以將其用於日誌/控制檯輸出或例如在DebuggerDisplay屬性中。
  • 如果您班上有任何Parse方法,它應該能夠解析ToString調用的結果。此外myInstance.Equals(MyClass.Parse(myInstance.ToString()))應該評估爲true
  • 如果兩個實例相等,它們的字符串表示也應該相等。
0

對於整個應用程序中的所有ToString方法,您應該使用統一且可重用的解決方案。手工編寫一般的ToStringHelper或使用外部庫,如stateprinter項目https://github.com/kbilsted/StatePrinter項目