为什么不能在as表达式中使用Object.runtimeType?

时间:2019-04-11 05:36:52

标签: dart

根据Object.runtimeType的Dart文档,该字段的类型为Type。这令人困惑,因为我从编译器收到错误消息,抱怨该字段不是类型。

请参阅以下示例代码:

final double first = 1.0;
final int second = 2;

final third = second as double;       // works fine, unlike declaration below.
assert(first.runtimeType == double);  // true

final fourth = second as first.runtimeType;

最后一行抛出此编译时错误:

  

名称“ first.runtimeType”不是类型,因此不能在“ as”表达式中使用。

示例代码显示了first.runtimeType == double,难道不是跟着_ as first.runtimeType等同于_ as double吗?

1 个答案:

答案 0 :(得分:2)

我认为实际上很简单,runtimeType仅在运行时可用,不能由编译器进行静态分析。