C# 铸造使用系统.c型#
是否可以使用C# 铸造使用系统.c型#,c#,casting,C#,Casting,是否可以使用System.type?作为参考将对象强制转换为所需类型 我进行了一次搜索,但普遍的共识是否定的,尽管我希望C#4.0中引入的一些辅助工具可以帮助我 也就是说,下面的代码不起作用,但伪代码是我想要的 object o = null; var t = typeof(string); ... string foo = (t)o; 编辑:我需要使用XmlSerializer重建/反序列化为t中存储的没有意义的类型 施法根本不会改变对象;它只允许您在编译时使用对象作为给定类型 如果您不知道
System.type?
作为参考将对象强制转换为所需类型
我进行了一次搜索,但普遍的共识是否定的,尽管我希望C#4.0中引入的一些辅助工具可以帮助我
也就是说,下面的代码不起作用,但伪代码是我想要的
object o = null;
var t = typeof(string);
...
string foo = (t)o;
编辑:我需要使用
XmlSerializer
重建/反序列化为t
中存储的没有意义的类型
施法根本不会改变对象;它只允许您在编译时使用对象作为给定类型如果您不知道在编译时将其强制转换为什么类型,则强制转换是无用的,因为它不允许您对强制转换的表达式执行任何操作。无需强制转换。对象不会改变,当“casting”时,引用(变量)的类型会改变。我猜您正在寻找类似的对象。如果类型为机具,并且可转换为所需类型(当然,这不是强制转换),则此操作有效。请查看:
var foo = Convert.ChangeType(o, typeof(string))
您希望
foo
的编译时类型是什么?你到底想达到什么目的?解释更宏观的情况会有很大帮助。如果您尝试编写一个示例用法,您会发现您的问题毫无意义。即使对于XmlSerializer,我也不明白您为什么需要这种类型转换。即使代码不起作用,您是否可以添加一个代码来显示您正在尝试执行的操作?实际上,如果对象实现了“显式”运算符,它可以更改对象。@KooKiz:在运行时不会。只有当编译器知道调用运算符时,才会发生这种情况。