String.Format

String.Format的签名如下

public static string Format(IFormatProvider provider, string format, params object[] args)

调用方式如下

var v = String.Format(new MyFormatProvider(),"{0:A}{1:B}{2:C}",arg1,arg2,arg3)

执行过程如下

调用provider的GetFormat方法,得到实现ICustomFormatter接口的一个类的对象,这个对象的名字假设叫objFormatter。

objFormatter有一个方法,其签名是:string Format(string format, object arg, IFormatProvider formatProvider)。

该Format方法会被调用三次,其参数是

A  arg1  provider

B  arg2  provider

C  arg3  provider

最终,A决定arg1的格式化信息,B决定arg2的格式化信息,C决定arg3的格式化信息

例子请参考:http://msdn.microsoft.com/zh-cn/library/system.iformatprovider(VS.95).aspx

原文地址:https://www.cnblogs.com/cnbwang/p/2016054.html