Binder.ChangeType(Object, Type, CultureInfo) Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Changes the type of the given Object
to the given Type
.
public:
abstract System::Object ^ ChangeType(System::Object ^ value, Type ^ type, System::Globalization::CultureInfo ^ culture);
public abstract object ChangeType (object value, Type type, System.Globalization.CultureInfo? culture);
public abstract object ChangeType (object value, Type type, System.Globalization.CultureInfo culture);
abstract member ChangeType : obj * Type * System.Globalization.CultureInfo -> obj
Public MustOverride Function ChangeType (value As Object, type As Type, culture As CultureInfo) As Object
Parameters
- value
- Object
The object to change into a new Type
.
- type
- Type
The new Type
that value
will become.
- culture
- CultureInfo
An instance of CultureInfo that is used to control the coercion of data types. If culture
is null
, the CultureInfo for the current thread is used.
Returns
An object that contains the given value as the new type.
Remarks
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. |
If a binder implementation allows coercion of string values to numeric types, the culture
parameter is necessary to convert a string that represents 1000 to a Double value, because 1000 is represented differently by different cultures. The default binder does not do such string coercions.