В C # при каких обстоятельствах мне нужно указывать CultureInfo IFormatProvider при использовании ToString () для String или Char? - PullRequest
0 голосов
/ 02 мая 2018

С C # при каких обстоятельствах мне нужно предоставить CultureInfo IFormatProvider при использовании ToString() на String или Char?

Я получаю его с преобразованием числа или даты, например,

(-10000.4).ToString(provider: new System.Globalization.CultureInfo("es-ES"));
(-10000.4).ToString(provider: new System.Globalization.CultureInfo("en-US"));

DateTime.Now.ToString(provider: new System.Globalization.CultureInfo("es-ES"));
DateTime.Now.ToString(provider: new System.Globalization.CultureInfo("en-US"));

дает:

-10000,4
-10000.4
01/05/2018 22:49:09
5/1/2018 10:49:09 PM

а как же следующее:

"Some string".ToString(provider: new System.Globalization.CultureInfo("es-ES"));
"Some string".ToString(provider: new System.Globalization.CultureInfo("en-US"));

Какие строки я мог бы использовать, которые были бы затронуты культурой?

То же самое для char.

1 Ответ

0 голосов
/ 02 мая 2018

Ни при каких обстоятельствах, так как ничего не делает. Как документ MSDN n для String.ToString(IFormatProvider provider) гласит:

provider зарезервирован и в настоящее время не участвует в этом работа.

Поскольку этот метод просто возвращает текущую строку без изменений, существует нет необходимости звонить напрямую.

То же самое относится к Char.ToString(IFormatProvider provider).


Причина, по которой String и Char имеют этот явно бесполезный метод, заключается в что необходимо реализовать интерфейс IConvertible, например, позволяет конвертировать из string в int, int в string и т. д.

...