You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

空安全场景下`?.method()`调用语法中`?`运算符的作用是什么?

Dart 空安全中?.运算符?的作用

你代码里的hello?.toUpperCase()属于条件成员访问运算符的用法,其中?的作用如下:

  • 首先会前置检查变量hello的实际值是否为null
  • 若hello不为null,正常执行后续的toUpperCase()方法调用,返回方法执行结果
  • 若hello为null,直接短路后续逻辑,返回null,不会触发空指针调用异常

对比参考:如果你直接写hello.toUpperCase(),当hello为null时运行会直接抛出NoSuchMethodError错误,因为null类型没有实现toUpperCase方法。

和你已经了解的!断言运算符的差异是:!是强制认定变量不为空,哪怕实际为null也会强行调用后续方法,容易触发运行时异常;而?是安全的短路逻辑,不会抛出空相关异常。

内容的提问来源于stack exchange,提问作者dipansh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 23:36:04