为什么编译器不能决定类型

本文关键字:类型 决定 不能 编译器 为什么 | 更新日期: 2023-09-27 18:00:36

我只是想知道为什么我们需要为十进制类型追加m或m?

文件显示没有隐含的转换

我认为编译器有足够的信息,因为我们声明了Decimal关键字。

有人能解释一下为什么编译器不能确定该值应该被视为十进制但不是双精度。

为什么编译器不能决定类型

如果您有这样的语句

decimal x = 5.6;

编译器首先只查看赋值的右侧(5.6),确定其类型(double),然后检查结果是否可以赋值给左侧的变量(x)。

由于x被声明为decimal,但编译器已确定表达式的类型为double(并且没有从doubledecimal的隐式转换),因此赋值无效。

(此规则的唯一例外是将lambda表达式分配给委托变量。在这种情况下,编译器确实使用左侧的信息来确定右侧的类型。)