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);
}
我认为,在运行时,你不应该看到任何区别.