我想知道为什么下面的downcast失败@运行时间:
情况1:
Object y = 10.23;
Console.WriteLine(y.GetType()); //System.Double
int z = (int)y;// fails @ runtime
Console.ReadKey();
Run Code Online (Sandbox Code Playgroud)
案例2:
Double y = 10.23;
Console.WriteLine(y.GetType());//System.Double
int z = (int)y;//success
Console.ReadKey();
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,y的类型是System.Double,仍然为什么在第一种情况下downcst失败?
Mar*_*ell 11
在第一个例子中; 拆箱(你展示的)与向下转换或转换不同 ; 或许不幸的是,C#对所有3使用相同的语法.
您必须正确地取消装箱值类型(例如int/double).或者使用Convert.ToInt32(y)哪个具有嵌入的逻辑.
在第二个示例中,这是一个转换(不是unbox,而不是downcast).转换在语言规范中定义(如本例中)或通过自定义静态运算符定义.
不同的是object.盒子改变了一切.