C#中,对象格式化的理解
对象格式化,指的是以一定的方式(可用户自定义,也可利用现有的格式说明符)来显示对象,如数字类型的常见格式说明符:
字符串格式化,是很常见的,在我们的程序开发中。 string对象之静态方法Format,就是用来进行对象格式化的,定义: public static string Format(string format, object obj); 该方法有多个重载,其工作原理一样,步骤如下:
1、用obj对象去替代format中的格式说明符
2、处理obj的显示(调用其合适的ToString()方法)
a: obj inherits IFormattable , 调用obj的实现IFormattable接口中的带2个参数的ToString()方法
b: 非a,则调用obj.ToString()方法(如果未重写,则直接继承System.Object类的ToString()方法)
IFormattable定义如下:
格式符 |
应 用 |
含 义 |
示 例 |
C |
数字类型 |
专用场合的货币值 |
$4834.50 ( £4834.50 ( |
D |
只用于整数类型 |
一般的整数 |
4834 |
E |
数字类型 |
科学计数法 |
4.834E+003 |
F |
数字类型 |
小数点后的位数固定 |
4384.50 |
G |
数字类型 |
一般的数字 |
4384.5 |
N |
数字类型 |
通常是专用场合的数字 格式 |
4,384.50 (UK/USA) 4 384,50 (欧洲大陆) |
P |
数字类型 |
百分比计数法 |
432,000.00% |
X |
只用于整数类型 |
16进制格式 |
1120 (如果要显示0x1120,需要写上0x) |
字符串格式化,是很常见的,在我们的程序开发中。 string对象之静态方法Format,就是用来进行对象格式化的,定义: public static string Format(string format, object obj); 该方法有多个重载,其工作原理一样,步骤如下:
1、用obj对象去替代format中的格式说明符
2、处理obj的显示(调用其合适的ToString()方法)
a: obj inherits IFormattable , 调用obj的实现IFormattable接口中的带2个参数的ToString()方法
b: 非a,则调用obj.ToString()方法(如果未重写,则直接继承System.Object类的ToString()方法)
IFormattable定义如下:
interface IFormattable
{
string ToString(string format, IFormatProvider formatProvider);
}
3、用户自定义对象的格式化,则需要继承IFormattable接口,实现其带2个参数的ToString()方法即可,format:包含格式说明符的字符串 formatProvider:文化背景信息,为空时,用的系统设置中指定的文化背景信息