System.Convert.ChangeType 方法 (Object, Type, IFormatProvider)

方法描述

返回一个指定类型的对象,该对象的值等于指定的对象。 参数提供区域性特定的格式设置信息。

语法定义(C# System.Convert.ChangeType 方法 (Object, Type, IFormatProvider) 的用法)

public static Object ChangeType(
	Object value,
	Type conversionType,
	IFormatProvider provider
)

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
value System-Object 用于实现 IConvertible 接口的对象。
conversionType System-Type 要返回的对象的类型。
provider System-IFormatProvider 一个提供区域性特定的格式设置信息的对象。
返回值 System.Object 一个类型为 conversionType 的对象,其值等效于 value。 - 或 - 如果 value 的 Type 与 conversionType 相等,则为 value。 - 或 - 如果 value 是 null,且 conversionType 不是值类型,则为 null 引用(Visual Basic 中为 Nothing)。

提示和注释

ChangeType 是将 value 指定的对象转换为 conversionType 的通用转换方法。 value 参数可以是任何类型的对象,conversionType 也可以是表示任何基类型或自定义类型的 Type 对象。 要使转换成功,value 必须实现 IConvertible 接口,因为此方法只是包装对相应 IConvertible 方法的调用。 此方法要求支持将 value 转换为 conversionType。

provider 使用户得以指定关于 value 内容的区域性特定转换信息。 例如,如果 value 是表示数字的 String,则 provider 可以提供有关用于表示该数字的表示法的区域性特定信息。

System.Convert.ChangeType 方法 (Object, Type, IFormatProvider)例子

该示例还说明了 ChangeType 方法如何包装对源类型 IConvertible 实现的调用。

public class Example
{
   public static void Main()
   {
      Temperature cool = new Temperature(5);
      Type[] targetTypes = { typeof(SByte), typeof(Int16), typeof(Int32),
                             typeof(Int64), typeof(Byte), typeof(UInt16),
                             typeof(UInt32), typeof(UInt64), typeof(Decimal),
                             typeof(Single), typeof(Double), typeof(String) };
      CultureInfo provider = new CultureInfo("fr-FR");

      foreach (Type targetType in targetTypes)
      {
         try {
            object value = Convert.ChangeType(cool, targetType, provider);
            Console.WriteLine("Converted {0} {1} to {2} {3}.",
                              cool.GetType().Name, cool.ToString(),
                              targetType.Name, value);
         }
         catch (InvalidCastException) {
            Console.WriteLine("Unsupported {0} --> {1} conversion.",
                              cool.GetType().Name, targetType.Name);
         }                     
         catch (OverflowException) {
            Console.WriteLine("{0} is out of range of the {1} type.",
                              cool, targetType.Name);
         }
      }
   }
}
// The example dosplays the following output:
//       Converted Temperature 5.00°C to SByte 5.
//       Converted Temperature 5.00°C to Int16 5.
//       Converted Temperature 5.00°C to Int32 5.
//       Converted Temperature 5.00°C to Int64 5.
//       Converted Temperature 5.00°C to Byte 5.
//       Converted Temperature 5.00°C to UInt16 5.
//       Converted Temperature 5.00°C to UInt32 5.
//       Converted Temperature 5.00°C to UInt64 5.
//       Converted Temperature 5.00°C to Decimal 5.
//       Converted Temperature 5.00°C to Single 5.
//       Converted Temperature 5.00°C to Double 5.
//       Converted Temperature 5.00°C to String 5,00°C.

异常

异常 异常描述
InvalidCastException
  • 不支持此转换。
  • value 为 null,而且 conversionType 是值类型。
  • value 不实现 IConvertible 接口。
FormatException value 的格式不是 provider 可以识别的 conversionType 的格式。
OverflowException value 表示超出 conversionType 范围的数字。
ArgumentNullException conversionType 为 null。

命名空间

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