空值感知运算符:?.、?? 和 !
安全地读取空值并提供默认值
空值感知运算符:?.、?? 和 ! 是 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 反馈 — 无需本地设置。