为什么打开对象到long显示InvalidCastException

本文关键字:long 显示 InvalidCastException 对象 为什么 | 更新日期: 2023-09-27 18:16:47

我想知道为什么下面显示一个InvalidCastException:

Object obj = 9;
long num = (long)obj; //InvalidCastException

在网上搜索后,我发现Object认为9是Int,所以long并不完全匹配Int。我的问题是为什么Object认为9是Int,而不是shortlong ?

为什么打开对象到long显示InvalidCastException

因为9Int32字面值。要指定Int64文字,请使用

Object obj = 9L;
long num = (long)obj;

如果您明确地说它是一个长。纯数读为整数,除非有小数点。

Object obj = 9L;
long num = (long)obj; 

下面的语句也会导致无效强制转换异常:

Object obj = 9L;
int num = (int)obj; //InvalidCastException

int是非十进制数字字面值的默认数据类型,正如double是十进制数字字面值的默认数据类型一样。您可以将数字字面值强制转换为具有适当后缀的其他类型。你也可以为intdouble使用后缀,但几乎没有人这样做。