我在这里很不确定:
Image i=some image...
Bitmap B=(Bitmap)i;
Run Code Online (Sandbox Code Playgroud)
B现在指向与i相同的对象.我很困惑......我会说Bitmap B会指向一个新的Image实例,它被转换为位图,但显然并非如此.然后我就不知道它是如何工作的.
Mic*_*tta 34
转换不会创建新对象(至少,除非定义了新的转换运算符,这在非数字类型中并不常见,并且不适用于您的示例).它只是指示编译器如何"处理"一个对象.在你提出的情况下,你告诉编译器"不要担心,相信我,B实际上是一个Bitmap".如果事实证明你已经告诉它了,那么运行时会通过InvalidCastException在运行时抛出来捕获它.
MSDN有更多信息.
强制转换是一种明确告知编译器您打算进行转换并且您知道可能发生数据丢失的方法