Dart 中“toString”和“as String”之间的区别?

vla*_*aba 2 dart

.toStringDart和Dart之间有什么区别吗as String

jul*_*101 5

toString()是一个方法Object,因此可用于每个对象。该方法用于获取对象的字符串表示形式:

该对象的字符串表示形式。

某些类具有默认的文本表示形式,通常与静态解析函数(如 int.parse)配对。这些类将提供文本表示作为它们的字符串表示。

其他类没有程序关心的有意义的文本表示。此类通常会重写 toString 以在检查对象时提供有用的信息,主要用于调试或日志记录。

https://api.dart.dev/stable/2.13.4/dart-core/Object/toString.html

as String是 Dart 中的类型转换,用于告诉分析器/编译器无论它假设什么,你现在要告诉它你的对象在String运行时实际上是 a 。您以后可以像使用String.

但是编译器会在运行时添加一个检查,如果该对象与 的接口不兼容String,您的应用程序将会崩溃,因为您对编译器撒了谎。

因此,它是两个完全不同的东西,并且用于不同的目的。例如,您不能as String在还不是 的对象上使用String

最安全的方法就是调用,toString()因为toString()onString只会返回自身。