它们看起来都可以用在相同的情况下.在类型判断等方面是否有不同的表示或不同的细微之处?

推荐答案

Dart Programming Language Specification, 3rd Edition条中的第Type dynamic条规定:

动态类型具有针对每种可能的标识符和多重性的方法,其中 所有可能的命名参数组合.这些方法都具有动态性 作为它们的返回类型,并且它们的形参都具有动态类型. 动态类型具有每个可能标识符的属性.这些属性全部 具有动态类型.

这意味着对dynamic类型变量调用任何方法都不会收到警告.对于类型为Object的变量,情况并非如此.例如:

dynamic a;
Object b;

main() {
  a = "";
  b = "";
  printLengths();
}

printLengths() {
  // no warning
  print(a.length);

  // warning:
  // The getter 'length' is not defined for the class 'Object'
  print(b.length);
}

我认为,在运行时,你不应该看到任何区别.

Dart相关问答推荐

基本数学函数的DART源代码

Dart 中 ThemeData 类的 copyWith() 方法

如何正确启用/禁用 Flutter 的 Button

如何使用Flutter在按钮网格中滑动(swipe)/拖动(drag) 2 个或更多按钮

Flutter ButtonRow 填充

Flutter - 为什么滑块不会在 AlertDialog 中更新?

Flutter更新导航栏

Dart / Flutter 错误:没有为类Logger定义toStringDeep

Flutter-在屏幕上绘制图形

使用 Dart 计算字符串中字母的数量

Flutter:主题未应用于文本小部件

如何在 Flutter 中使用 Provider 显示来自 ChangeNotifier 的错误

如何在 Dart 中获取当前脚本的目录?

如何将整数中的ascii值转换为Flutter中的等效字符?

Dart 有小部件库吗?

什么是健全的编程语言?

在 Dart 中是否允许在 for 循环中等待?

导出两个具有相同类名的库

Dart 中的 Math.round() 在哪里?

如何在 Dart 中引用另一个文件?