Binder.ChangeType(Object, Type, CultureInfo) 方法

定义

将给定 Object 的类型更改为给定 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

参数

value
Object

要更改为新的 Type对象。

type
Type

将成为新的Typevalue

culture
CultureInfo

该实例 CultureInfo 用于控制数据类型的强制。 culture如果是null,则CultureInfo使用当前线程。

返回

包含给定值作为新类型的对象。

注解

反射模型通用类型系统的辅助功能规则。 例如,如果调用方位于同一程序集中,则调用方不需要内部成员的特殊权限。 否则,调用方需要 ReflectionPermission。 这与查找受保护成员、私有成员等保持一致。

一般原则是 ChangeType ,应只执行扩大强制,这永远不会丢失数据。 加宽强制的一个示例是将一个 32 位有符号整数的值强制转换为一个 64 位有符号整数的值。 这与收缩强制(可能会丢失数据)区分开来。 收缩强制的一个示例是将 64 位有符号整数强制转换为 32 位有符号整数。

下表列出了默认 ChangeType执行的强制。

源类型 目标类型
任意类型 其基类型。
任意类型 它实现的接口。
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 单、双
Int64 单、双
Single Double
非引用 按引用。

如果绑定器实现允许将字符串值强制转换为数值类型, culture 则参数必须将表示 1000 的字符串转换为值 Double ,因为不同的区域性以不同的方式表示 1000。 默认绑定器不执行此类字符串强制。

适用于