string.Format方法的代码如下:
结合我们的函数调用阅读函数签名,了解到:string.Format方法的第一个参数接收我们传入的自定义格式化类对象myFormater,第二个参数接收格式化字符串format,第三个参数接收需要被格式化的参数集合args,这里仅变量i。
查看string.Format方法体,可以了解到:方法先对传入参数format及args进行非法判断,参数为空时抛出参数空异常。参数正常时,初始化StringBuilder 对象(关于StringBuilderCache.Acquire的使用这里不做过多介绍,自己去研究),接着调用sb.AppendFormat方法,最后通过语句return StringBuilderCache.GetStringAndRelease(sb)返回结果。可见,真正的格式化操作都在sb.AppendFormat方法中完成,这里并不打算给出sb.AppendFormat方法的完整代码,只是给出sb.AppendFormat方法中调用GetFormat 方法和Format 方法的代码。
代码传入参数typeof(ICustomFormatter),返回ICustomFormatter类型的formatter 。iformat
上面就是代码中调用Format方法的地方。
执行上面代码都会去执行我们的自定义格式化类MyFormater的代码。
要想了解详细的执行情况,那就请你的VS,开始敲代码吧。
好像到这里,我也没有把问题很好的解释清楚。
这与我对.NET库代码一窍不通是有很大关系的。其实,到这里,我对sb.AppendFormat方法的具体操作也还是停留在了解的层面上,所以就没有过多叙述了。希望大家能谅解。但是到最后,大家至少对我们自定义的格式化类MyFormater在.NET库中是如何被使用的应该有一个初步认识了。
就到这里了。最后给出程序执行结果。看下面...
哦,忘了解释Format方法的代码,哎,太累了,就不解释了,大家都是牛人,能看懂的。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shumachanpin/article-35433-2.html
终于回归了