This documentation is archived and is not being maintained.

Binder.ChangeType Method

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

[Visual Basic]
Public MustOverride Function ChangeType( _
   ByVal value As Object, _
   ByVal type As Type, _
   ByVal culture As CultureInfo _
) As Object
public abstract object ChangeType(
 object value,
 Type type,
 CultureInfo culture
public: virtual Object* ChangeType(
 Object* value,
 Type* type,
 CultureInfo* culture
) = 0;
public abstract function ChangeType(
   value : Object,
 type : Type,
 culture : CultureInfo
) : Object;


The value to change into a new Type.
The new Type that value will become.
An instance of CultureInfo 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.
Note   For example, this parameter is necessary to convert a String that represents 1000 to a Double value, since 1000 is represented differently by different cultures.

Return Value

An Object containing 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.
Char UInt16, UInt32, Int32, UInt64, Int64, Single, Double
Byte Char, UInt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double
SByte Int16, Int32, Int64, Single, Double
UInt16 UInt32, Int32, UInt64, Int64, Single, Double
Int16 Int32, Int64, Single, Double
UInt32 UInt64, Int64, Single, Double
Int32 Int64, Single, Double
UInt64 Single, Double
Int64 Single, Double
Single Double
Non-reference By-reference.


Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, .NET Compact Framework, Common Language Infrastructure (CLI) Standard

See Also

Binder Class | Binder Members | System.Reflection Namespace