我正在寫一些代碼來將字符串解析爲一個double,但是這個字符串是從另一臺機器傳給我的。當然,一個問題發生在文化可能不同的地方。所以,雖然機器A可能送我:因爲它是在德國,有不同的文化解析來自C中不同文化的數字
"0.5"
機B可能給我
"0,6"
。
正確解析這兩個輸入的最佳方法是什麼?有人建議使用CultureInfo.InvariantCulture
作爲Convert.ToDouble
的參數,但是這不僅僅有助於在哪裏我產生上述字符串,而不是當別人可以向我發送不同的字符串?
我在想我需要知道源文化並在嘗試轉換之前更改Thread.CurrentThread.CurrentCulture
以匹配嗎?
這不是因爲它在德國,而是因爲程序員對這個問題無知 - 可悲的是太常見了。 Alll外部溝通應該在INVARIANT文化中。當你做String.Format時,FxCop甚至警告說在.NET中。 – TomTom 2012-01-18 11:31:01
謝謝,有道理。我現在更瞭解使用不變文化。 – Martin 2012-01-18 11:51:44