dynamic、?、?.、!.、??

1.dynamic

void main() {
  // 动态类型 类似ts的any
  dynamic a = 1;
  print(a);
  a = 'hello';
  print(a);
  a = 1.5;
  print(a);
  // 与var的区别是,var第一次定义后,不能再改变类型
  var b = '111';
  b.toInt();
  print(b);
}

2.?、?.、!.、??

void main() {
  // 可空类型 类似ts的?
  String? a = null;
  print(a);
  // 安全调用运算符 类似ts的?.
  // 程序判断有可能为null,直接.length会报错,使用?.可以避免报错
  print(a?.length);
  // 非空断言运算符 类似ts的!
  // 开发者认为a一定不为null,使用!.断言避免报错
  print(a!.length);
  // 空合并运算符 类似ts的??
  // 如果a为null,返回默认值'hello'
  print(a ?? 'hello');
}

 

posted on 2026-02-06 16:22  ChoZ  阅读(0)  评论(0)    收藏  举报

导航