• 已删除用户
童话的爱
童话的爱
发布于 2024-02-20 / 144 阅读 / 0 评论 / 0 点赞

Dart 中类型后跟有?、??、!操作符的意义及如何使用

参考:flutter学习笔记之Dart-8 问号、双问号、感叹号的理解-CSDN博客

由于dart 在2.12.2 及之后自动启用了空安全,故

一个问号 ?:

String? str = null;

这代表默认允许str 变量的值为空。

如果希望将String? 类型的变量值赋值给String 类型的变量,需要多加一层判断将非空值赋值上去

String? str = null;
if (str == null) {
  str = "默认值";
}

也可以利用下面的双问号来代替该判断变量是否为空并赋值的语句

String? str = null;
String notNullStr = str ?? "指定如果str为空时要赋值的默认值";

具体??怎么用看下面的说明

两个问号 ??:

String? str = null;
str ??= "默认值";

这代表先判断str 是否为null ,如果为null 则将??= 后的值赋值给str 变量,否则保持str 的变量内容不变

!:

String? str = null;
try {
  String notNullStr = str!;
} catch (e) {
  print(e);
}

这代表使用!操作符判断str 是否为null,由于为null时会抛出异常,故一般包裹try catch 使用


评论