前言
在dart中有几个常用的操作运算符,对于初学者而言很容易混淆,特此记录一下。
用法
- ? 安全调用运算符
在对一个对象进行方法调用或属性访问时,如果该对象为 null,则会抛出一个空指针异常。而安全调用运算符可以避免这种情况的发生
String? a; //可空类型允许不赋值(值为null),不会报错
var obj;
obj?.foo();
如果obj为空,就不会调用foo方法
- ?? 空判断运算符 用于在表达式结果为null时,提供默认值。即若左侧为null,则将右侧值赋给变量,否则保持操作不变。
var name = 'Jack';
var temp = name ?? 'Tom';
此处name初始值不为null,则temp为Jack,保持不变。
- ??= 运算符 表示在变量值为null时,进行赋值,避免覆盖已有值。
String name = 'Jack';
name ??= 'Tom';
如果name初始值为null,则会被赋值为Tom。此处name有初始值,则保持不变。
- ! 空值断言操作符 确定一个表达式不应该为 null,但编译器无法确定时,你可以使用!来告诉编译器你确信该表达式不是 null。否则在运行时会出现 NullPointerException
String? name = getName();
print(name!.length);
如果name为null,则抛出异常。