我想知道为什么下面的低音失败失败@运行时间:
案例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会失败?
答案 0 :(得分:11)
在第一个例子中;拆箱(您显示的内容)与向下转换或转换的不同;或许不幸的是,C#对所有3使用相同的语法。
你必须 unbox value-types(例如int / double)才能正确使用。或者使用具有此嵌入逻辑的Convert.ToInt32(y)
。
在第二个示例中,这是一个转换(不是unbox,而不是downcast)。转换在语言规范中定义(如本例中)或通过自定义静态运算符定义。
差异是object
。该框会更改所有内容。