为什么downcast在运行时失败

时间:2009-11-28 10:18:22

标签: c# casting

我想知道为什么下面的低音失败失败@运行时间:

案例1:

Object y = 10.23;
Console.WriteLine(y.GetType()); //System.Double
int z = (int)y;// fails @ runtime
Console.ReadKey();

案例2:

Double y = 10.23;
Console.WriteLine(y.GetType());//System.Double
int z = (int)y;//success
Console.ReadKey();

在这两种情况下,y的类型是System.Double,仍然为什么在第一种情况下downcst会失败?

1 个答案:

答案 0 :(得分:11)

在第一个例子中;拆箱(您显示的内容)与向下转换或转换的不同;或许不幸的是,C#对所有3使用相同的语法。

必须 unbox value-types(例如int / double)才能正确使用。或者使用具有此嵌入逻辑的Convert.ToInt32(y)

在第二个示例中,这是一个转换(不是unbox,而不是downcast)。转换在语言规范中定义(如本例中)或通过自定义静态运算符定义。

差异是object。该框会更改所有内容