私は別の開発者のコードを使っています。C#10進数の文化的な依存です
私は、文字列を解析する際に文化情報を適切に使用する必要があることを理解しています。そうしないと、「1.2」対「1,2」型の問題が発生します。この場合、開発者は10進数として格納されているNumericUpDownを使用しています。
float fValue = System.Convert.ToSingle(numericUpDown1.Value, System.Globalization.CultureInfo.InvariantCulture)
私の質問は次のとおりです。 - 次のコードと同等ですか? - 文化情報は適切に処理されますか?
- このキャストは例外をスローできますか?
float fValue = (float)numericUpDown1.Value;
これらが同等でない(または安全でない)場合は、理由を説明して「正しい」解決策を提案できますか?
ありがとうございます!
_ "渡された文化を無視します" _それを無視しません。代わりに、オーバーロード 'Convert.ToDouble(Object、IFormatProvider)'が実行されます。 – user2190035
@ user2190035 Er ...何?いいえ、 'Convert.ToDouble'は' float'/'Single'への変換に関与しません。 'float IConvertible.ToSingle(IFormatProvider provider)'が無視すると思わないなら、[参照元](https://github.com/Microsoft/referencesource/blob/master/mscorlib/system/decimal.cs)をチェックしてください私の答えに書いたような「提供者」。 – hvd
あなたは正しいです。私が何を考えているのか分からない。 – user2190035