使用C#在String或Char上使用ToString()时,在什么情况下需要提供CultureInfo IFormatProvider?

Con*_*sed 2 .net c# culture tostring

用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"));
Run Code Online (Sandbox Code Playgroud)

赠送:

-10000,4
-10000.4
01/05/2018 22:49:09
5/1/2018 10:49:09 PM
Run Code Online (Sandbox Code Playgroud)

但是以下内容如何:

"Some string".ToString(provider: new System.Globalization.CultureInfo("es-ES"));
"Some string".ToString(provider: new System.Globalization.CultureInfo("en-US"));
Run Code Online (Sandbox Code Playgroud)

我可能会使用哪些字符串受文化影响?

同样的char.

Adr*_*ian 7

在任何情况下,因为它什么都不做.由于MSDN documentatio N代表String.ToString(IFormatProvider provider)指出:

provider 是保留的,目前不参与此操作.

因为此方法只是返回当前字符串不变,所以不需要直接调用它.

这同样适用于Char.ToString(IFormatProvider provider).


之所以StringChar这个显然没用的方法是,它是实现所需要的IConvertible接口,使得例如允许转换,从stringint,intstring