推荐答案
在 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
的值。