Binder.ChangeType Method

Changes the type of the given Object to the given Type.

Namespace: System.Reflection
Assembly: mscorlib (in mscorlib.dll)

public abstract Object ChangeType (
	Object value,
	Type type,
	CultureInfo culture
public abstract Object ChangeType (
	Object value, 
	Type type, 
	CultureInfo culture
public abstract function ChangeType (
	value : Object, 
	type : Type, 
	culture : CultureInfo
) : Object
Not applicable.



The object to change into a new Type.


The new Type that value will become.


An instance of CultureInfo that is used to control the coercion of data types. If culture is a null reference (Nothing in Visual Basic), the CultureInfo for the current thread is used.


For example, this parameter is necessary to convert a String that represents 1000 to a Double value, because 1000 is represented differently by different cultures.

Return Value

An object that contains the given value as the new type.

Reflection models the accessibility rules of the common type system. For example, if the caller is in the same assembly, the caller does not need special permissions for internal members. Otherwise, the caller needs ReflectionPermission. This is consistent with lookup of members that are protected, private, and so on.

The general principle is that ChangeType should perform only widening coercions, which never lose data. An example of a widening coercion is coercing a value that is a 32-bit signed integer to a value that is a 64-bit signed integer. This is distinguished from a narrowing coercion, which may lose data. An example of a narrowing coercion is coercing a 64-bit signed integer to a 32-bit signed integer.

The following table lists the coercions performed by the default ChangeType.

Source type

Target type

Any type

Its base type.

Any type

The interface it implements.


UInt16, UInt32, Int32, UInt64, Int64, Single, Double


Char, UInt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double


Int16, Int32, Int64, Single, Double


UInt32, Int32, UInt64, Int64, Single, Double


Int32, Int64, Single, Double


UInt64, Int64, Single, Double


Int64, Single, Double


Single, Double


Single, Double





Windows 98, Windows Server 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

.NET Framework

Supported in: 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 2.0, 1.0

XNA Framework

Supported in: 1.0