Dart Academy · 课时

空值感知运算符:?.、?? 和 !

安全地读取空值并提供默认值

第 4 / 4 课13 个步骤

空值感知运算符:?.、?? 和 ! 是 CoddyKit 上的免费 Dart Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Dart Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Dart Academy 课程共包含 4 节课。

处理可能为空的值

可为空的值需要谨慎处理。Dart 的空值感知运算符可以让您用一个简短步骤读取值并提供默认值。✨

安全调用运算符

使用?.仅在对象不为空时调用成员。如果对象为空,整个表达式就会变为空值。

String? name;
int? len = name?.length;

空值不会导致崩溃

使用?.时,空对象会直接短路,而不是抛出错误。您的程序可以继续平稳运行。

print(name?.toUpperCase());

空值合并运算符

??运算符会提供备用值。它会返回左侧的值;如果左侧为空,则返回右侧的值。

String label = name ?? 'Guest';

组合使用这两个运算符

将它们组合起来:先使用 ?. 安全读取,再使用??提供默认值,这样最终总能得到可用的值。

int len = name?.length ?? 0;

为空时赋值

??=运算符仅在变量当前为空时赋值,是设置一次性默认值的便捷方式。

name ??= 'Anonymous';

感叹号运算符

!运算符断言某个值当前不为空,并将可为空类型转换为普通类型。

int sure = name!.length;

感叹号是一种承诺

使用!意味着您要承担责任。如果值实际上为空,程序会在运行时抛出错误,因此请谨慎使用。

优先使用检查,而不是感叹号

不确定时,显式的 if 测试或??默认值比!更安全。只有在确定值存在时才使用感叹号。

读取嵌套数据

安全调用?.可以沿着多个链接连续使用,在遇到第一个空值时停止,而不会产生错误。

var city = user?.address?.city;

选择合适的工具

使用?.进行安全读取,使用??提供默认值,只有在能证明值存在时才使用!。

快速检查

当值为空时,哪个运算符会提供备用值?

回顾

您已经掌握了空值感知工具:?. 用于安全读取,?? 用于提供默认值,! 则在您确定值不为空时断言其非空。🎯

免费开始

用 AI 导师学习 Dart — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
30
课程
120

常见问题解答

「空值感知运算符:?.、?? 和 !」课时是免费的吗?

是的 — 「空值感知运算符:?.、?? 和 !」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Dart Academy 课程的其余内容,请升级到 CoddyKit PRO。 Dart Academy 课程共包含 4 节课。

「空值感知运算符:?.、?? 和 !」这节课中我会学到什么?

安全地读取空值并提供默认值 你通过在浏览器中直接运行的动手代码来练习 Dart Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Dart Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Dart Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「空值感知运算符:?.、?? 和 !」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Dart Academy 课中编写并运行代码吗?

能。每节 Dart Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 单行函数的箭头语法
  2. 匿名函数和闭包
  3. 可空类型和问号
  4. 空值感知运算符:?.、?? 和 !
← 返回 Dart Academy