使用系统进行铸造.类型- c#

本文关键字:类型 系统 | 更新日期: 2023-09-27 18:17:14

是否可以使用System.Type?作为引用将对象强制转换为所需的类型?

我搜索了一下,普遍的共识是没有,尽管我希望c# 4.0中可能会引入一些帮助,可以帮助我。

。下面的代码不能工作,但是伪代码是我想要的。

object o = null;
var t = typeof(string);
...
string foo = (t)o;

编辑:我需要使用XmlSerializer来重构/反序列化到存储在t中的类型

使用系统进行铸造.类型- c#

看一下:

var foo = Convert.ChangeType(o, typeof(string))

这没有意义。

强制转换不会改变对象;它只允许您在编译时将对象用作给定类型。如果在编译时不知道要将其转换为的类型,则强制转换是无用的,因为它不会让您对强制转换的表达式做任何事情。

无需强制转换。对象没有改变,你的引用类型(变量)在"强制转换"时改变了。

我猜您正在寻找类似System.ChangeType()的东西。如果类型实现了IConvertible,并且它可以转换为所需的类型(当然这不是强制类型转换)