使用typeof进行投射

时间:2014-05-17 17:11:31

标签: c# dynamic casting

我想要在运行时

中投射Type someType的某种类型

例如我想做:

var customers = GetCustomers() as someType[] 

怎么做?

2 个答案:

答案 0 :(得分:5)

您无法使用as强制转换运行时已知的类型:表达式在编译时无效,因为您必须使用不能与{{1}一起使用的typeof(T) }。

你可以使用的是as。这里第二个参数可以使用System.Convert.ChangeType(object, Type)并结合控制语句,您可以在运行时将输入转换为正确的类型。

你应该问问自己这是否是你想要的东西:只有在运行时才知道的类型会让你几乎没用。

MSDN: System.Convert.ChangeType

答案 1 :(得分:-1)

as 运算符尝试将对象强制转换为特定类型,如果失败则返回null。

示例:

StringBuilder b = someObject as StringBuilder; if(b!= null)...

也相关:

强制转换操作符尝试将对象强制转换为特定类型,如果失败则抛出异常。

示例:

StringBuilder b =(StringBuilder)someObject。

请参阅此链接:Difference between is and as keyword