【发布时间】:2017-01-22 17:45:17
【问题描述】:
我对对象转换到底是什么以及它的用途有点困惑。 我已阅读有关 Casting and type conversion 的 MSDN 文档,在其中我可以看到,对于显式转换,您需要使用强制转换运算符。我理解文档中给出的示例,如果在将一种类型转换为另一种类型时可能会丢失一些数据,则需要使用强制转换运算符。
我只是对你如何投射物体感到困惑?我假设对象是一个类的实例,它可能包含比简单数据类型更多的信息?那么如何、为什么以及何时需要投射一个对象呢?
我看过一个投射对象的例子,很简单:
SomeType name = (SomeType)obj;
是我遗漏了什么,还是这个对象正在投射?如果是,在什么情况下需要像这样投射对象?
【问题讨论】:
-
拆箱是一种情况。在c#中引入泛型方法之前,我们不得不做太多的转换。这是因为太多方法使用了
object参数,例如非泛型版本List。考虑一下发送者如果类型为object的事件,您需要将其转换为Button例如。当然as运算符是首选,但我只是想解释一个有效的案例。