我一直在想這件事很長一段時間,但我似乎無法找到明確的答案。每當我轉換爲整數使用ToString()
方法的字符串,我運行代碼分析,我得到以下警告:使用Int32.ToString()沒有格式和IFormatProvider。爲什麼我會收到CA1305警告?
CA1305:Microsoft.Globalization:因爲「)int.ToString(下稱」 行爲可能 會根據當前用戶的 區域設置設置而異,請將'Class.Method()'中的此調用替換爲調用 'int.ToString(IFormatProvider)'。 如果'int.ToString( IFormatProvider)'的結果將顯示爲 該用戶,則指定 'CultureInfo.CurrentCulture'作爲 'IFormatProvider'參數。 否則,如果結果將是 存儲和軟件訪問,如 ,當它被持久化到磁盤或 數據庫,指定 'CultureInfo.InvariantCulture'。
這是非常著名的通用CA1305警告,每當你做出有一個接受IFormatProvider
參數的重載方法的調用它獲取所示。雖然這在幾乎所有情況下都是非常正確的警告,但我無法想象任何在調用默認值ToString()
時沒有任何格式或格式提供者的整數。所以,如果有人知道任何可能出錯的東西,請賜教。我猜測IFormatProvider
過載肯定是有原因的。
順便說一下,我做總是使用IFormatProvider
超載撥打電話,因爲它似乎也有一個性能的好處。如果有人對此有任何有見地的評論,請隨時分享。
很明顯的例子,謝謝。我不知道每種文化都有不同的負面跡象。 – 2011-04-04 08:49:18