?
int? a = 0 对象可为空
!
a! 强制拆包,告诉编译器a一定不为空
late
late 延迟初始化,告诉编译器使用前一定不为空
??=
// b如果是空,将value赋值给b
b ??= value;
??
*表达式 1* ?? *表达式 2* 如果表达式 1 为非 null 则返回其值,否则执行表达式 2 并返回其值
?.
?. 条件访问成员 与上述成员访问符类似,但是左边的操作对象不能为 null,例如 foo?.bar,如果 foo 为 null 则返回 null ,否则返回 bar
?..
querySelector('#confirm') // Get an object.
?..text = 'Confirm' // Use its members.
..classes.add('important')
..onClick.listen((e) => window.alert('Confirmed!'));
版本提示:
?.. 运行在 2.12 和以上的 版本 中可用。
上面的代码相当于:
var button = querySelector('#confirm');
button?.text = 'Confirm';
button?.classes.add('important');
button?.onClick.listen((e) => window.alert('Confirmed!'));
// 如果p不为空,访问p.y
var a = p?.y;