Использование Int32.ToString () без Format и IFormatProvider. Почему я получаю предупреждение CA1305?

Я давно думаю об этом, но, похоже, не могу найти окончательного ответа. Всякий раз, когда я конвертирую целое число в строку с помощью метода ToString () и запускаю анализ кода, я получаю следующее предупреждение:

CA1305: Microsoft.Globalization: Поскольку поведение int.ToString () могло варьироваться в зависимости от текущего пользователя настройки локали, замените этот вызов в 'Class.Method ()' с вызовом 'int.ToString (IFormatProvider)'. Если результат 'int.ToString ( IFormatProvider) 'будет отображаться в пользователь, укажите "CultureInfo.CurrentCulture" как Параметр IFormatProvider. В противном случае, если результат будет хранятся и доступны для программного обеспечения, например как когда он сохраняется на диске или в базу данных укажите «CultureInfo.InvariantCulture».

Это очень хорошо известное общее предупреждение CA1305, которое отображается всякий раз, когда вы вызываете метод, имеющий перегрузку, которая принимает параметр IFormatProvider . Хотя это очень правильное предупреждение почти во всех случаях, я не могу придумать ничего, что могло бы пойти не так, если бы вызывалась функция по умолчанию ToString () без всякого format или formatprovider для целого числа. Так что, пожалуйста, просветите меня, если кто-нибудь знает что-нибудь, что может пойти не так. Я предполагаю, что должна быть веская причина для перегрузки IFormatProvider .

Кстати, я делаю всегда вызов с использованием перегрузки IFormatProvider , потому что это также, кажется, дает преимущество в производительности. Если у кого-то есть какие-то проницательные комментарии по этому поводу, не стесняйтесь и делиться ими.

7
задан Edwin de Koning 4 April 2011 в 08:20
поделиться