推荐答案
在 Dart 中,?.、?? 和 ??= 运算符是用于处理空安全的常用操作符。它们的主要用途如下:
?.:安全调用运算符,用于在对象可能为null时安全地访问其成员。??:空合并运算符,用于在左侧表达式为null时提供一个默认值。??=:空赋值运算符,用于在变量为null时为其赋值。
本题详细解读
?. 安全调用运算符
?. 运算符允许你在对象可能为 null 时安全地访问其成员。如果对象为 null,则表达式的结果为 null,而不会抛出异常。
class User {
String? name;
}
void main() {
User? user;
print(user?.name); // 输出: null
}在上面的例子中,user 是 null,因此 user?.name 不会抛出异常,而是返回 null。
?? 空合并运算符
?? 运算符用于在左侧表达式为 null 时提供一个默认值。如果左侧表达式不为 null,则返回左侧表达式的值。
void main() {
String? name;
String displayName = name ?? 'Guest';
print(displayName); // 输出: Guest
}在这个例子中,name 是 null,因此 name ?? 'Guest' 返回 'Guest'。
??= 空赋值运算符
??= 运算符用于在变量为 null 时为其赋值。如果变量已经有一个非 null 的值,则不会进行赋值操作。
void main() {
String? name;
name ??= 'Guest';
print(name); // 输出: Guest
}在这个例子中,name 是 null,因此 name ??= 'Guest' 将 'Guest' 赋值给 name。
总结
?.用于安全地访问可能为null的对象的成员。??用于在左侧表达式为null时提供一个默认值。??=用于在变量为null时为其赋值。
这些运算符在 Dart 的空安全特性中非常有用,可以帮助开发者更安全地处理可能为 null 的值。