📜  dart null 感知运算符 - Dart (1)

📅  最后修改于: 2023-12-03 15:14:36.146000             🧑  作者: Mango

Dart中的Null感知运算符

Dart是一种强类型语言,变量必须是具体值或null。而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关键字。