开发者

why downcast fails at runtime

开发者 https://www.devze.com 2022-12-12 14:13 出处:网络
I want to know why be开发者_如何学JAVAlow downcast fails @ run time: case 1: Object y = 10.23; Console.WriteLine(y.GetType()); //System.Double

I want to know why be开发者_如何学JAVAlow downcast fails @ run time:

case 1:

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

case 2:

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

In both the cases the type of y is System.Double, still why downcst fails in first case?


In the first example; unboxing (what you show) is different to downcasting or conversion; it is perhaps unfortunate that C# uses the same syntax for all 3.

You must unbox value-types (such as int/double) correctly. Or use Convert.ToInt32(y) which has the logic for this embedded.

In the second example, this is a conversion (not an unbox, and not a downcast). Conversions are defined either in the language spec (like in this case) or via custom static operators.

The difference is object. The box changes everything.

0

精彩评论

暂无评论...
验证码 换一张
取 消