我剛剛遇到一些覆蓋ToString()
的代碼,並返回一些關鍵信息(不僅僅是調試信息)。這種類型的用戶稱爲ToString()
並解析關鍵數據。應該使用ToString來獲取關鍵信息嗎?
筆者認爲,從歷年閱讀各種點點滴滴,是ToString()
有相當薄弱contract
,即覆蓋它(如果你想)到顯示一些有意義的東西。
看我說的display there?我遇到的代碼依賴於這種類型的實例的文本表示非常具體;除了預期之外添加任何東西都會導致各種問題。因此,我的問題是,如果對象的文本表示是關鍵的,那麼應該使用ToString()
或者應該使用更明確的方法/屬性,例如,使用ToString()
。 AsText
?
我完全同意,但會認爲ToString方法可以是一個很好的候選人,以輸出文本數據,只要你的對象實現IFormattable。在那裏有各種數據綁定框架,將IFormattable.ToString比MyCustomTextOutputMethod()..更好用,但這並不是說你不能同時擁有兩個:) – MattDavey
@MattDavey公平點,雖然這是不同的覆蓋標準的'ToString()'方法。不過,我會更新來解決這個問題。 – dlev
是的,強調這兩種方法之間的區別很重要。我喜歡IFormattable的是,在標準實施模式,將Object.ToString推遲到IFormattable.ToString(「G」),它給你一個很好的進程路徑:) – MattDavey