IFormattable,ICustomFormatter, IFormatProvider接口

本文详细介绍了.NET中格式化接口IFormattable、IFormatProvider及ICustomFormatter的作用及使用方法。解析了Format方法的工作原理,并提供了自定义格式化的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定                 义

1、IFormattable

   提供一种功能,用以将对象的值格式化为字符串表示形式

2、IFormatProvider

   提供用于检索控制格式化的对象的机制。

3、ICustomFormatter

  自定义格式化功能

原                  理

1.Format方法的内部解析方式和原理

 a、Format方法在取到参数"I am {0},Today is {1:yyyy-MM-dd}."之后便将其分解成多个部分:① “ I am ” 、 ② "{0}" 、 ③",Today is " 、④"{1:yyyy-MM-dd}、⑤"."分解的原则是按照{}配对的数量进行,{}是微软定义好的标记。

  b、分解完成后在使用 StringBuilder的Append方法将各个部分添加进去,最后再用ToString方法转成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、微软源码解析

 

自 定 义 格 式 风 格

 1、IFormattable自定义格式化

  1.1、实现IFormattable方法,自定义个人风格

  

  1.2、使用方法

  

  为什么这样就能找个我们实现的接口呢,看看执行原理:(微软源码)

   
到目前为止实现string.format进行格式化基本应该没有什么问题,但是我们必须针对要进行格式化的每个类都要实现IFormattable接口,这样代码的冗余量比较大,个人不是很喜欢,那么有没有办法解决呢??看看下面两个高大尚的接口吧

2、 IFormatProvider、ICustomFormatter

  2.1、创建一个类实现IFormatProvider(格式化提供者)

   2.2、创建一个类实现ICustomFormatter(自定义格式内容)

  2.3、如何使用

  2.4、执行结果

我的博客主要用来交流,将自己所学、所看到比较好的东西 进行一下深入理解和回顾。

转载于:https://www.cnblogs.com/tx720/p/5964409.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值