[英]Why can not the Compiler decide the type
我只是想知道为什么我们需要 append m 或 M 用于十进制类型?
我认为编译器有足够的信息,因为我们声明了Decimal
关键字。
有人可以解释为什么编译器不能确定该值应该被视为十进制而不是双精度。
如果你有这样的声明
decimal x = 5.6;
编译器首先只查看赋值的右侧( 5.6
),确定其类型( double
),然后检查结果是否可以分配给左侧的变量( x
)。
由于x
被声明为decimal
,但编译器已确定表达式是double
类型(并且没有从double
到decimal
的隐式转换),因此赋值无效。
(此规则的唯一例外是将 lambda 表达式分配给委托变量。在这种情况下,编译器确实使用左侧的信息来确定右侧的类型。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.