IFormattable,ICustomFormatter, IFormatProvider接口
定???????????????? 義
1、IFormattable
? 提供一種功能,用以將對象的值格式化為字符串表示形式。
2、IFormatProvider
?提供用于檢索控制格式化的對象的機制。
3、ICustomFormatter
自定義格式化功能
原????????????????? 理
1.Format方法的內(nèi)部解析方式和原理
a、Format方法在取到參數(shù)"I?am?{0},Today?is?{1:yyyy-MM-dd}."之后便將其分解成多個部分:① “ I?am ” 、 ②?"{0}" 、 ③",Today?is " 、④"{1:yyyy-MM-dd}、⑤"."分解的原則是按照{(diào)}配對的數(shù)量進(jìn)行,{}是微軟定義好的標(biāo)記。
b、分解完成后在使用?StringBuilder的Append方法將各個部分添加進(jìn)去,最后再用ToString方法轉(zhuǎn)成string
var test =?new?StringBuilder();
??????????? test .Append("I?am");
??????????? test .Append(Name);
??????????? test .Append(",Today?is?");
??????????? test .Append(DateTime.Now.ToString("yyyy-MM-dd"));
??????????? test .Append(".");
c、微軟源碼解析
?
自 定 義 格 式 風(fēng) 格
?1、IFormattable自定義格式化
1.1、實現(xiàn)IFormattable方法,自定義個人風(fēng)格
1.2、使用方法
為什么這樣就能找個我們實現(xiàn)的接口呢,看看執(zhí)行原理:(微軟源碼)
???
到目前為止實現(xiàn)string.format進(jìn)行格式化基本應(yīng)該沒有什么問題,但是我們必須針對要進(jìn)行格式化的每個類都要實現(xiàn)IFormattable接口,這樣代碼的冗余量比較大,個人不是很喜歡,那么有沒有辦法解決呢??看看下面兩個高大尚的接口吧
2、?IFormatProvider、ICustomFormatter
2.1、創(chuàng)建一個類實現(xiàn)IFormatProvider(格式化提供者)
? 2.2、創(chuàng)建一個類實現(xiàn)ICustomFormatter(自定義格式內(nèi)容)
2.3、如何使用
2.4、執(zhí)行結(jié)果
我的博客主要用來交流,將自己所學(xué)、所看到比較好的東西 進(jìn)行一下深入理解和回顧。
轉(zhuǎn)載于:https://www.cnblogs.com/tx720/p/5964409.html
總結(jié)
以上是生活随笔為你收集整理的IFormattable,ICustomFormatter, IFormatProvider接口的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【caffe】基本数据结构blob
- 下一篇: C#中Uri操作