//前面那个本来想重新编辑的,但是那个编辑器之前被我调到Markdown之后,改回Tiny MCE编辑器不出来

1.ToString()方法 & IFormattable & IFormatProvider

先说ToString()

在System.Int32中定义了4个ToString方法

CLR via C# - Char_String - Format

1.无参的ToString()是重写Object的,(or ValueType)的
2,3,4用法相同,第三个可以自定义Provider

IFormattable接口

int实现了IFormattable接口

CLR via C# - Char_String - Format

IFormattable中只定义了一个ToString方法,format参数,和IFormatProvide类型的provider

IFormatProvider

在.NET中实现了IFormatProvider的类型,只有几个,其中包括SystemGlobalzation.CultureInfoIFormatProvider中定义了一个GetFormat方法(type),用来获取System.Globalization命名空间下的NumberFormatInfoDateTimeFormatInfo实例,
这两个类,同CultureInfo一样,也是IFormatProvider的实例,因为目前.NET中涉及国际化操作的,也就数字,和日期.NumberFormatInfo和DateTimeFormatInfo如果是获取关于日期,数字要格式化所需的东西.从DateTimeFormatInfo节选如下,还包括 中文,日语等等相关的内容

CLR via C# - Char_String - Format

DateTimeFormatInfo,NumberFormatInfo是IFormatProvider实例,他们的GetFormat方法,根据参数type,返回this,或者null

实例:

CLR via C# - Char_String - Format

 1 public static void Main()
 2         {
 3             int i = 999;
 4 
 5             //ToString()
 6             Console.WriteLine(i.ToString());//999
 7 
 8             //ToString(format)
 9             Console.WriteLine(i.ToString("x"));//hex 3e7
10             Console.WriteLine(i.ToString("X"));//Hex 3E7
11             Console.WriteLine(i.ToString("C"));//货币格式 ¥999.00
12 
13             //ToString(format,provider)
14             //InvariantCulture无特定文化信息,999前面那符号是 国际通用货币符号            
15             Console.WriteLine(i.ToString("C",System.Globalization.CultureInfo.InvariantCulture));//¤999.00
16             //en-US 语言-国家信息
17             Console.WriteLine(i.ToString("C",new System.Globalization.CultureInfo("en")));//$999.00
18 
19             System.Console.ReadKey();
20         }
View Code

相关文章: