📅  最后修改于: 2023-12-03 15:14:36.146000             🧑  作者: Mango
Dart是一种强类型语言,变量必须是具体值或null。而null感知运算符可以帮助我们更好地处理变量的null值。
Null感知运算符(Null-aware operators)是一种特殊的运算符,可以轻松地处理变量的null值。在Dart中,常见的Null感知运算符有:
?.
可选成员访问运算符??
空值合并运算符在Dart中,当我们尝试访问null对象的成员时,会抛出NullPointerException异常。为了避免这种情况的发生,Dart添加了可选成员访问运算符(?.)。
可选成员访问运算符的作用是,如果前面的变量为null,则整个表达式返回null。例如:
class Person {
String? name;
int? age;
}
void main() {
Person? person = null;
// 下面的语句会抛出NullPointerException异常
// print(person.name);
// 使用可选成员访问运算符,则不会抛出异常
print(person?.name);
}
在上面的例子中,person为null,如果直接访问person.name,则会抛出异常。但是使用可选成员访问运算符,则表达式会直接返回null,不会抛出异常。
空值合并运算符(??)用于当变量为null时,提供一个默认值。例如:
void main() {
String? name = null;
// 如果name为null,则使用默认值'unknown'
String newName = name ?? 'unknown';
print(newName); // 输出:unknown
}
在上面的例子中,当name为null时,使用空值合并运算符,将name的值替换为默认值'unknown'。
Null感知运算符可以使我们更好地处理变量的null值,代码更加简洁和健壮。值得注意的是,如果使用Null感知运算符,则需要将变量声明为可为空,即使用?
或late
关键字。