私はローマ数字に整数を出力したいと思っていましたが、thisの回答がJesse Slicerに流れました。これは、拡張メソッドであるが、私はフォーマットプロバイダーを書いたことがありませんFormatProviderと拡張メソッドの比較対新しいクラス
int a = 10;
string b = a.ToString("RN", provider);
// OR
string c = string.Format(provider, "{0:RN} blah foo", a);
代わりの
int a = 10;
string b = a.ParseRomanNumeral();
// OR
string c = string.Format("{0} blah foo", a.ParseRomanNumeral());
ような何かをするToString(string, IFormatProvider)
を生かし疑問を抱いたので、私はわからないんだけど関係する仕事が、ここに私の質問です。ローマ数字のようないくつかの明確に定義されたフォーマット変換のために、あなたが使用します。
- フォーマットプロバイダ
- は、
Parse
を実装RomanNumeralクラスを記述TryParse
、およびToString
拡張メソッドを使用します
- その他
なぜですか?
string.Format()
とそのいとこのいずれかの方法(例えば、StringBuilder.AppendFormat()
)あなたの答えに影響を与えるを使用していますか?明らかに、拡張メソッドでは、これらの書式設定メソッドの1つを使用して変換にアクセスできませんでした。
私はガマット全体を実装するカスタムクラスが最も慎重であると同時に最も時間がかかると思います。カスタムフォーマットプロバイダを利用することは、既存のグローバリゼーション用のもの(もしあれば)の足元を歩くように思えます。
拡張メソッドは、String.Formatを使用する機能を無効にします。 –
実際にはありません。しかし、コードの観点から文字列をローマ数字に変換するときに、フォーマットはどのように機能しますか? – shahkalpesh
String.Formatは文字列から数値への変換ではありません(できません)。これが、私がRomanNumeralクラスがすべての用途を最も優雅にカバーしていると思う理由です。 –