dart 学习之 object和dinamic一些细节

我们先来看一段代码

main() {
  Object a = "111";
  print(a.length);   // 错误的

  dynamic b = "111";
  print(b.length);

  String c = "111";
  print(c.length);
}

首先,让我们逐行分析代码:

main() {
  Object a = "111";
  print(a.length);   // 错误的
}

在这个例子中,变量 a 被声明为 Object 类型,并且被赋值为字符串 “111”。然而,由于 Object 类型是Dart中所有对象的基类,它并没有一个名为 length 的属性。因此,当尝试打印 a.length 时,会引发一个错误。

接下来,让我们看看下一个示例:

dynamic b = "111";
print(b.length);

在这个例子中,变量 b 被声明为 dynamic 类型。dynamic 类型在Dart中是一种特殊的类型,它表示变量的类型会在运行时动态确定。在这种情况下,b 被赋值为字符串 “111”,因此编译器会在运行时将 b 的类型推断为 String 类型。由于 String 类型具有 length 属性,所以打印 b.length 会输出字符串的长度,即 3。

最后,让我们看看最后一个示例:

String c = "111";
print(c.length);

在这个例子中,变量 c 被显式声明为 String 类型,并被赋值为字符串 “111”。因为 c 是一个 String 类型的变量,它具有一个名为 length 的属性,该属性返回字符串的长度。因此,打印 c.length 会输出字符串的长度,即 3。

总结一下:

当使用 Object 类型声明变量时,变量可以引用任何类型的对象。但由于 Object 类型没有 length 属性,因此无法直接使用 length 属性。
当使用 dynamic 类型声明变量时,变量的类型会在运行时动态确定。编译器会根据变量的赋值来推断其类型。因此,可以使用 length 属性,但需要注意赋值的类型是否具有该属性。
当使用特定类型(例如 String)声明变量时,可以确保变量具有特定类型的属性和方法。在这种情况下,可以直接使用 length 属性。

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wniuniu_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值