Это особенно полезно, если вы заботитесь о локализации (глобализации) в вашем приложении. То есть, если вы хотите, чтобы ваше приложение поддерживало несколько языков и форматов, специфичных для разных культур, вам следует использовать это.

ы думаете, действительно необходимо обеспечитьIFormatProvider в методеString.Format(string, object) ?

Лучше написать полный вариант

String.Format(CultureInfo.CurrentCulture, "String is {0}", str);

или просто

String.Format("String is {0}", str);

?

Ответы на вопрос(4)

IFormatProvider (или эквивалентно пройтиnull) большинство типов аргументов в конечном итоге будут отформатированы в соответствии сCultureInfo.CurrentCulture, Интересно, что вы можете указатьIFormatProvider это может привести к ошибкам при форматировании аргументов или переопределить культуру форматирования в зависимости от другого контекста.

Обратите внимание, чтоCultureInfo.CurrentCulture влияет на форматирование аргумента, а не на выбор ресурса; выбор ресурса контролируетсяCultureInfo.CurrentUICulture.

 Martin Konicek03 февр. 2011 г., 17:41
Как определить пользовательский IFormatProvider -csharp-examples.net/custom-iformatprovider
 Joe Cartano25 мая 2011 г., 03:00
Что, если объект является строкой, может ли культура что-то изменить? (В отличие от форматирования что-то вроде DateTime)
Решение Вопроса

если генерируемая строка должна сохраняться способом, который не зависит от культуры текущего пользователя (например, в реестре или в файле).

Вы захотите использовать CurrentCulture для строк, которые должны быть представлены в пользовательском интерфейсе текущему пользователю (формы, отчеты).

Незначительные ошибки могут возникать, если вы используете CurrentCulture там, где следует использовать InvariantCulture: ошибки, которые обнаруживаются только тогда, когда несколько пользователей с разными культурами имеют доступ к одной и той же записи реестра или файлу, или если пользователь меняет свою культуру по умолчанию.

Явное указание CurrentCulture (по умолчанию, если аргумент IFormatProvider опущен) - это, по сути, документация, демонстрирующая, что вы учли вышеизложенное и что генерируемая строка должна использовать культуру текущего пользователя. Вот почему FxCop рекомендует указывать аргумент IFormatProvider.

если вы заботитесь о локализации (глобализации) в вашем приложении. То есть, если вы хотите, чтобы ваше приложение поддерживало несколько языков и форматов, специфичных для разных культур, вам следует использовать это.

вам не нужно указывать культуру, если ваша строка не содержит специфичные для культуры элементы, такие как десятичные разделители, валюта и т. Д., Которые должны отображаться в зависимости от культуры.

Ваш ответ на вопрос