Binder.ChangeType(Object, Type, CultureInfo) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
将给定 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 实例,用于控制数据类型的强制转换。 如果 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 | Single、Double |
Int64 | Single、Double |
Single | Double |
非引用 | 按引用。 |
如果绑定器实现允许将字符串值强制转换为数值类型, culture
则需要 参数将表示 1000 的字符串转换为 Double 值,因为 1000 由不同区域性表示的方式不同。 默认联编程序不进行此类字符串强制。