System.ICustomFormatter.Format 方法

上一篇:IConvertible 方法 下一篇:IDisposable 方法

方法描述

使用指定的格式和区域性特定格式设置信息将指定对象的值转换为等效的字符串表示形式。

语法定义(C# System.ICustomFormatter.Format 方法 的用法)

string Format(
	string format,
	Object arg,
	IFormatProvider formatProvider
)

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
format System-String 包含格式规范的格式字符串。
arg System-Object 要设置格式的对象。
formatProvider System-IFormatProvider 一个对象,它提供有关当前实例的格式信息。
返回值 System.String arg 的值的字符串表示形式,按照 format 和 formatProvider 的指定来进行格式设置。

提示和注释

ICustomFormatter.Format 为回调方法。 它被支持自定义格式的方法(如 String.Format(IFormatProvider, String, Object[]))调用。 对于复合格式字符串中的每个格式项调用该实现一次。 例如,在下列语句中,ICustomFormatter.Format 方法被调用了三次。

C#

VB

复制

Console.WriteLine(String.Format(new BinaryFormatter(),

"{0} (binary: {0:B}) (hex: {0:H})", byteValue));

arg 参数是对象列表中的对象,列表中从零开始的位置对应于特殊格式项的索引。

format 参数包含一个格式字符串,该字符串是某个格式项的 formatString 组件。 如果格式项没有 formatString 组件,则 format 的值是 null。 如果 format 为 null,则根据 arg 的类型,您可能能够使用您所选择的默认格式规范。

formatProvider 参数是 IFormatProvider 实现,为 arg 提供格式设置。 通常,它是 ICustomFormatter 实现的实例。 如果 formatProvider 为 null,则忽略该参数。

您的 Format 方法实现必须包含以下功能,以使得 .NET Framework 可以提供您不支持的格式设置。 如果您的格式方法不支持格式,则确定正在设置格式的对象是否实现 IFormattable 接口。 如果实现,请调用该接口的 IFormattable.ToString 方法。 否则,调用基础对象的默认 Object.ToString 方法。 下面的代码说明了这种模式。

C#

VB

复制

if (arg is IFormattable)

return ((IFormattable)arg).ToString(format, CultureInfo.CurrentCulture);

else if (arg != null)

return arg.ToString();

System.ICustomFormatter.Format 方法例子

然后,通过将 BinaryFormatter 对象作为 Format 方法的 provider 参数传递,BinaryFormatter 可用于提供自定义格式设置,如下例所示。

public class Example
{
   public static void Main()
   {
      Console.WindowWidth = 100;

      byte byteValue = 124;
      Console.WriteLine(String.Format(new BinaryFormatter(), 
                                      "{0} (binary: {0:B}) (hex: {0:H})", byteValue));

      int intValue = 23045;
      Console.WriteLine(String.Format(new BinaryFormatter(), 
                                      "{0} (binary: {0:B}) (hex: {0:H})", intValue));

      ulong ulngValue = 31906574882;
      Console.WriteLine(String.Format(new BinaryFormatter(), 
                                      "{0}\n   (binary: {0:B})\n   (hex: {0:H})", 
                                      ulngValue));

      BigInteger bigIntValue = BigInteger.Multiply(Int64.MaxValue, 2);
      Console.WriteLine(String.Format(new BinaryFormatter(), 
                                      "{0}\n   (binary: {0:B})\n   (hex: {0:H})", 
                                      bigIntValue));
   }
}
// The example displays the following output:
//    124 (binary: 01111100) (hex: 7c)
//    23045 (binary: 00000000 00000000 01011010 00000101) (hex: 00 00 5a 05)
//    31906574882
//       (binary: 00000000 00000000 00000000 00000111 01101101 11000111 10110010 00100010)
//       (hex: 00 00 00 07 6d c7 b2 22)
//    18446744073709551614
//       (binary: 00000000 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111110)
//       (hex: 00 ff ff ff ff ff ff ff fe)

异常

异常 异常描述

命名空间

namespace: System

程序集: mscorlib(在 mscorlib.dll 中)

版本信息

.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 系统要求。

上一篇:IConvertible 方法 下一篇:IDisposable 方法