使用System.Type进行强制转换 - c#

时间:2011-12-09 16:09:20

标签: c# casting

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

我进行了搜索,普遍的共识是否定的,尽管我希望在C#4.0中引入一些可以帮助我的辅助工具。

即。以下内容不起作用,但伪代码是我想要的。

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

修改:我需要使用XmlSerializer重建/反序列化为t

中存储的类型

4 个答案:

答案 0 :(得分:16)

看看:

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

答案 1 :(得分:3)

这没有意义。

Casting根本不会更改一个对象;它只是让你在编译时使用对象作为给定类型 如果您不知道在编译时将其转换为的类型,则转换是无用的,因为它不会让您对转换表达式执行任何操作。

答案 2 :(得分:1)

无需施法。当“转换”时,对象不会改变,引用类型(变量)会发生变化。

答案 3 :(得分:0)

我猜您正在寻找像System.ChangeType()这样的东西。如果类型为IConvertible类型,并且它可以转换为所需类型(当然这不是强制转换),则此方法有效。