私はちょうどToString()
を上書きし、(デバッグ情報だけでなく)いくつかの重要な情報を返すいくつかのコードに出くわしました。このタイプのユーザーはToString()
と呼ばれ、その重要なデータを解析します。重要な情報にToStringを使用する必要がありますか?
私の意見は、長年にわたって様々なこまごまとを読んでから、ToString()
は(あなたがをしたい場合を)すなわち、contract
かなり弱いが表示何らかの意味のあるものにそれをオーバーライドしていることです。
と表示されましたが表示されますか?私が遭遇したコードは、このタイプのインスタンスのテキスト表現に非常に特化しています。予想外のものを追加すると、あらゆる種類の問題が発生します。
私の質問は、オブジェクトのテキスト表現が重要な場合は、ToString()
を使用するか、より明示的なメソッド/プロパティを使用する必要があります。 AsText
?
私は完全に同意しますが、あなたのオブジェクトがIFormattableを実装している限り、ToStringメソッドはテキストデータを出力するのに適していると主張します。 MyCustomTextOutputMethod()ではなくIFormattable.ToStringでもっとうまく動作するさまざまなデータバインディングフレームワークがありますが、それはあなたが両方を持つことができないと言っているわけではありません:) – MattDavey
@MattDavey公正点標準の 'ToString()'メソッドをオーバーライドします。私はそれに対処するために更新されます。 – dlev
ええ、2つの方法の違いを強調することが重要です。 IFormattableについて私が気に入っているのは、標準的な実装パターンでは、Object.ToStringがIFormattable.ToString( "G")を継承していて、良い進路を提供しているということです。 – MattDavey