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

value 将变成的新 Type

culture
CultureInfo

一个 CultureInfo 实例,用于控制数据类型的强制转换。 如果 culturenull,则使用当前线程的 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 Single、Double
Int64 Single、Double
Single Double
非引用 按引用。

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

适用于