1

集約されたレコードの文字列出力フォーマット コードを書いています (CSV 形式の出力を考えてください)。単純IFormattable.ToString(string, IFormatProvider)object.ToString().

object.ToString()コードの重複を減らすために、との関係についていくつかの仮定を立てることができればよいでしょうIFormattable.ToString(string, IFormatProvider)

たとえば、それを仮定することに頼ることができToString() == ToString(null, null)ますか? そのマッピングを維持する既定のカルチャまたは形式プロバイダーはありますか? それとも、両者の間に必然的な関係はありませんか?

4

1 に答える 1

1

MSDN ドキュメントと .NET ソース コードに基づいて、組み込み型の for はおよび とToString()同等であると想定できます。ToString(null, null)ToString("G", null)

これについては、MSDNの .NET Framework での型の書式設定に関する情報がいくつかあります。

例えばそのサイトによるとInt32.ToString()

現在のカルチャInt32.ToString("G", NumberFormatInfo.CurrentInfo)の値をフォーマットするための呼び出し。Int32

ソースコードを確認するToString()と、

Number.FormatInt32(m_value, null, NumberFormatInfo.CurrentInfo);

String ToString(String format, IFormatProvider provider)通話中

Number.FormatInt32(m_value, format, NumberFormatInfo.GetInstance(provider));

つまり、format実際nullにはそうではありません"G""G"ただし、とは同じである必要があるため、違いはありませんnullNumberFormatInfo.GetInstance(null)を返すNumberFormatInfo.CurrentInfoので、またはInt32.ToString()と同等です。Int32.ToString("G", null)Int32.ToString(null, null)

IFormattable.ToStringドキュメントで再確認して、 nulls が実際に両方のパラメーターのデフォルト値を示していることを確認できます。

パラメーター

フォーマット

使用する形式。

-また-

IFormattable 実装の型に対して定義された既定の形式を使用するための null 参照 (Visual Basic では Nothing)。

フォーマットプロバイダー

値のフォーマットに使用するプロバイダー。

-また-

オペレーティング システムの現在のロケール設定から数値形式情報を取得するための null 参照 (Visual Basic では Nothing)。

于 2015-12-11T19:55:35.907 に答える