那位高手来讲讲IFormatProvider啊?

ede 2002-04-08 10:18:43
怎么觉得过去printf的好时光一去不复返了呢?
...全文
560 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qqchen79 2002-05-14
  • 打赏
  • 举报
回复
如果只是简单的数据/日期格式话的话,用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三个类的帮助。
alienX 2002-05-13
  • 打赏
  • 举报
回复
FormatProvider是一个接口,提供用于检索控制格式化的对象的机制。

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

acptvc 2002-04-08
  • 打赏
  • 举报
回复
感谢您使用微软产品。

任何一个实现了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))。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧