文化不变对象ToString()

cod*_*nix 11 .net formatting culture cultureinfo

如何调用ToString()对象并使其使用不变文化?在ToString()实现的对象上有重载IConvertible(比如bool,int,float ..),但如果有问题的对象怎么IConvertible办?

Cod*_*aos 15

我认为IFormattable是相关的界面.它有一个ToString方法,允许您指定格式提供程序,它可以是一种文化.

  • 由于文化是格式提供者,您可以将它与`String.Format(CultureInfo.InvariantCulture,"{0}",value)一起使用. (25认同)
  • @nitzel:C#不是.NET Framework中的唯一语言。 (2认同)

Str*_*ior 11

System.Convert班有一个静态ToString重载需要的object

Convert.ToString(obj, CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

根据我的基准,速度大约是它的两倍string.Format(CultureInfo.InvariantCulture, "{0}", value),更重要的是,它看起来更干净。

  • Convert.ToString(Object, IFormatProvider) 重载在内部使用对 IConvertible 和 IFormattable 的强制转换,并使用实例方法 Object.Tostring() 作为后备。.NET Framework 4.8 和当前 .NET 中的实现相同。https://referencesource.microsoft.com/#mscorlib/system/convert.cs,6a1a2c3ac58e60dd https://github.com/dotnet/runtime/blob/28f6daaaf825f167aa1808291cf56bf16234e48a/src/libraries/System.Private.CoreLib/src/System/转换.cs#L1924 (2认同)