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
将成为新的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。 默认绑定器不执行此类字符串强制。