IFormatProvider接口的理解和使用

2025-05-03 18:58:41

1、首先,IFormatProvider是一个“接口”。关于接口的特性(“抽象”性、不能写具体的可执行代码,只规定名称和参数、具体实现由继承的类负责……),网上有一个精辟的例子{引自【1】},笔者贴在下面了。接口不提供方法的具体视线,方法的具体实现是写在继承接口的函数中的。不过,只要我们知道某个类是继承了某个接口,那么我们就可以确定这个类满足某种(由接口规定的)“约定”——比如说存在某种方法。总体说来,这句话总结得很精辟:“接口本质上是类与类之间的一种约定”。

IFormatProvider接口的理解和使用

3、(2)对于Project类来说,则完全不同了!使用了接口以后,就可以直接把接口(IProgrammer)的对象作为参数传给WriteProgram函数,再也不用重载那么多次了!同样,在main()函数中只要知道了某个类有IProgrammer接口,创建一个接口,然后“接口=new 类名”,这个接口直接作为参数传输。顿时感觉C++里的重载弱爆了有木有!

IFormatProvider接口的理解和使用

5、IFormatProvider作为一个接口,只有一个GetFormat函数。那么,这个函数是干什么用的呢?这个函数规定了继承这个接口的类里的GetFormat函数的输入和输出——输入一个Type,输出是一个对象object。

IFormatProvider接口的理解和使用

7、对于函数来说,如果输入的参数有IFormatProvider接口,则这个位置可以输入任何继承了IFormatProvider接口的类的对象。以StringBuilder.AppendFormat(IFormatProvider, String, Object)方法为例,可以看到这个函数的第一个参数是IFormatProvider,下面看一下函数实际使用的实例,其中enGB是英语 Great Britain的格式设置约定。

IFormatProvider接口的理解和使用
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢