感谢您使用微软产品。任何一个实现了IFormatProvider接口的类,都可以被当作一个格式信息提供者。它可以用来提供诸如:在字符串与浮点数转换中表示小数点的字符,数字串与日期型转换中表示分隔符的字符,等信息。关于IFormatProvider更详细的信息请参看:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemiformatproviderclasstopic.asp您可以通过如下的语句来访问当前的环境所提供的IFormatProvider:
float f = 123;
string str = f.ToString(System.Threading.Thread.CurrentThread.CurrentCulture);
System.Console.WriteLine(str);- 微软全球技术中心 VC技术支持本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。为了为您创建更好的讨论环境,请参加我们的用户满意度调查(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。

解决方案 »

  1.   

    FormatProvider是一个接口,提供用于检索控制格式化的对象的机制。public interface IFormatProvider
    公共语言运行库中的一些方法可以在数值和字符串表示形式之间进行相互转换,这些方法采用字符串参数,该参数包含一个或多个称为格式说明符的字符,这些字符指示如何转换数值。如果格式说明符的含义因区域性而异,则格式化对象提供字符串表示形式中所用的实际字符。
      

  2.   

    如果只是简单的数据/日期格式话的话,用FormatString就行了,不用提供任何IFormatProvider的实现。
    比如Console.WriteLine("HEX: {0:X}",  i);
    可以输出16进制数据,等等。并不比printf复杂多少。即使是复杂应用,也只要实用系统提供的DateTime/Number/CultureInfo就可以了。
    比如用美国美语Culture的数字/货币格式(当前系统使用的缺省不是英文):
    String.Format(CultureInfo.GetFormat("US-en"), ...);具体的FormatString格式可以查MSDN里DateTimeFormatInfo, CultureInfo, NumberFormatInfo三个类的帮助。