System.IFormattable.ToString 方法
方法描述
使用指定的格式格式化当前实例的值。
语法定义(C# System.IFormattable.ToString 方法 的用法)
string ToString( string format, IFormatProvider formatProvider )
参数/返回值
参数值/返回值 | 参数类型/返回类型 | 参数描述/返回描述 |
---|---|---|
format | System-String | 要使用的格式。- 或 -null 引用(Visual Basic 中为 Nothing)将使用为 IFormattable 实现的类型所定义的默认格式。 |
formatProvider | System-IFormatProvider | 要用于设置值格式的提供程序。- 或 -null 引用(Visual Basic 中为 Nothing)将从操作系统的当前区域设置中获取数字格式信息。 |
返回值 | System.String | 当前实例的值,以指定格式表示。 |
提示和注释
ToString 方法将值转换为可以用多种方式来表示的字符串表示形式。 其精确格式取决于由特定区域性、专业或行业定义的特定符号或指定顺序。 可以直接调用该方法。 此外,它通过 Convert.ToString(Object) 和 Convert.ToString(Object, IFormatProvider) 方法以及使用 .NET Framework 中复合格式设置功能的方法(如 String.Format(String, Object[])、 Console.WriteLine(String, Object[]) 和 StringBuilder.AppendFormat(String, Object[]))自动调用。(有关详情,请参阅 复合格式。)
复合格式设置方法为格式字符串中的每一格式项自动调用一次 ToString 方法。 传递到方法的参数取决于调用的特定格式设置方法以及格式项的内容,如下所述:
如果格式项不包含格式字符串(例如,如果格式项只是 {0}),则它将把 null 作为 System.String 参数的值。
如果格式项包含格式字符串(例如,{0:G}),则将该格式字符串作为 System.String 参数的值。
如果原始的方法调用不包含 System.IFormatProvider 参数,则 CultureInfo.CurrentCulture 将作为 System.IFormatProvider 参数的值。
如果原始的方法调用包含 System.IFormatProvider 参数,则随方法调用提供的提供程序将作为 System.IFormatProvider 参数的值。
注意
仅当向复合格式设置方法传递 ICustomFormatter 格式提供程序或自定义格式提供程序的 Format 方法返回 null 时,此复合格式设置方法将调用对象的 ToString 实现。
.NET Framework 包括三种格式的提供程序,都实现了 IFormatProvider 接口:
NumberFormatInfo 提供数字格式信息,如用于小数分隔符和组分隔符的字符,以及货币值中货币符号的拼写和位置。
DateTimeFormatInfo 提供与日期、时间相关的格式信息,如日期模式中月、日和年的位置。
CultureInfo 包含特定区域中的默认格式信息,其中包括数字格式信息以及与日期、时间相关的格式信息。
此外,您还可以定义自己的自定义格式提供程序。
对实现者的说明
ToString 方法必须支持 "G"(常规)格式说明符。 除“G”说明符外,该类还可以定义它支持的格式说明符的列表。 此外,类必须准备处理的是 null 格式说明符。 有关格式化和格式化代码的更多信息,请参见 格式化类型。
System.IFormattable.ToString 方法例子
此代码示例摘自为 IFormattable 类提供的一个更大的示例。
using System; using System.Globalization; public class Temperature : IFormattable { private decimal temp; public Temperature(decimal temperature) { if (temperature < -273.15m) throw new ArgumentOutOfRangeException(String.Format("{0} is less than absolute zero.", temperature)); this.temp = temperature; } public decimal Celsius { get { return temp; } } public decimal Fahrenheit { get { return temp * 9 / 5 + 32; } } public decimal Kelvin { get { return temp + 273.15m; } } public override string ToString() { return this.ToString("G", CultureInfo.CurrentCulture); } public string ToString(string format) { return this.ToString(format, CultureInfo.CurrentCulture); } public string ToString(string format, IFormatProvider provider) { if (String.IsNullOrEmpty(format)) format = "G"; if (provider == null) provider = CultureInfo.CurrentCulture; switch (format.ToUpperInvariant()) { case "G": case "C": return temp.ToString("F2", provider) + " °C"; case "F": return Fahrenheit.ToString("F2", provider) + " °F"; case "K": return Kelvin.ToString("F2", provider) + " K"; default: throw new FormatException(String.Format("The {0} format string is not supported.", format)); } } }
版本信息
.NET Framework 受以下版本支持:4、3.5、3.0、2.0、1.1、1.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1 受以下版本支持:
适用平台
Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。