2017-12-21 5 views
1

私は何をして、このやっているし、それが必要なのかAPIの作業と文字列のすべてがありますか?.ToString(CultureInfo.CurrentCulture)ToString(CultureInfo.CurrentCulture)これは必要ですか?

よ intやdecimalなどの他のデータ型はどうですか?

+0

お金や何かを見せたい場合は、これが意味をなさないかもしれません。たとえば、スイスでは、数字をカンマで区切ります。ドイツ語では、ドットで表します。 クライアントのカルチャーを取得した場合、これは理にかなっています。cultureinfo – JanMer

+1

文字列で呼び出されたときは何もしません。 – Evk

+0

*実際のコードを投稿してください。 '.ToString()'は個々の型によって定義されます。ほとんどの場合、 'ToString()'は '.ToString(CultureInfo.CurrentCulture)'へのショートカットです。おそらくあなたの型は 'ToString()'オーバーロードを持っていないでしょうか? –

答えて

0

文化によっては、数字が異なる(特に小数点以下)ものがあります。ほとんどのヨーロッパ言語では、小数点はコンマと桁区切りとして書かれている例えば、ドットのように書かれています。

  • 英語100000.34
  • スロバキア100000,34

整数が、必ずしもそれを必要としません。あなたは桁区切りでフォーマットされている場合は、それがさらに混乱を取得:

  • 英語100,000.34
  • スロバキア100.000,34

UPDATE:コメントで指摘したように、ToStringメソッド()はデフォルト設定されます現在の文化にこれは問題です。なぜなら、開発者のマシン上で期待どおりに動作するように見えても、クライアントにとっては違って見えて、失敗する可能性があるからです。これがRS#がそれについて文句を言う理由です。

+0

ほとんどの型では、組み込みの型では、 'ToString()'は 'ToString(CultureInfo.CurrentCulture)'のショートカットです。コンパイラとResharperが暗黙的な文化が使用されているという警告を生成する理由は何ですか –

+0

OPはCultureInfoの内容を尋ねていません。 –

+0

@adam私はダブルスなどをどうやって扱うべきですか? ShippingWeightLbsはdoubleです ShippingWeightLbs = model.ShippingWeightLbs – user3582849

0

ReSharperのようなツールがspecify culture explicitlyに勧めている理由がよくuderstoodことです:テキストへのデータ構造の

アドホック変換は、現在のカルチャ に大きく依存している、そしてとき予期しない結果につながる可能性コード は、元の開発者 のロケールと異なるロケールのマシンで実行されます。あいまいさを防ぐために、ReSharperは、このような問題が発生する可能性のあるコードの インスタンスを警告します。

あなたが書いたように、あなたはその行為の責任を負います。

また、私の意見では、デフォルトはもう十分ではありません。これは、人間が書式付きテキストを読んで、プロセス/スレッドの開始時に設定されている文化を使用していることを前提としています。 Windowsには、画面の表示方法やカスタマイズしたアプリケーションなど、デスクトップよりも多くの場合、今よりも多くの意味があります。ユーザーが望むものを使用すれば、ユーザーは満足しています。

APIプロジェクトで作業していて、その呼び出しのどこでもCurrentCultureが表示され、そのテキストがユーザーに直接表示されていない場合、それを書いた最も可能性の高いユーザーは理解できませんでした。

関連する問題