📅  最后修改于: 2023-12-03 15:00:20.253000             🧑  作者: Mango
在dart中,null安全是一个非常重要的概念。通常情况下,我们需要使用条件语句来检查对象是否为null,以避免程序崩溃。但是,使用空感知运算符,我们的代码可以更加简洁、易读。
空感知运算符(null aware operator)是用来简化null检查的语法糖。它能够用更加简洁的代码实现null判断,从而避免了一些重复的代码。
空感知运算符包括以下几个:
以下是一个示例代码:
class Person {
String? name;
}
void main() {
Person? person;
// 使用 ?. 运算符
var name1 = person?.name;
print(name1); // 输出:null
person = Person();
// 使用 ?. 运算符
var name2 = person?.name;
print(name2); // 输出:null
// 使用 ?? 运算符
var name3 = person?.name ?? 'Unknown';
print(name3); // 输出:Unknown
// 使用 ??= 运算符
person ??= Person();
person.name ??= 'John Doe';
print(person.name); // 输出:John Doe
}
在上面的示例代码中,我们首先定义了一个Person
类,其中包含一个可空的name
属性。在main
函数中,我们定义了一个可空的Person
对象person
。然后,我们使用空感知运算符来获取person
对象的name
属性,如果person
为null,则返回null,否则返回name
属性的值。在第二次调用时,由于person
不是null,因此返回了Unknown
字符串。
接下来,我们使用空感知运算符和默认值运算符来获取person
对象的name
属性,如果person
为null,则返回Unknown
字符串。最后,我们使用默认赋值运算符??=
来判断person
对象是否为null,如果是,则创建一个新的Person
对象,并将其赋值给person
。然后,我们使用默认赋值运算符来判断person.name
属性是否为null,如果是,则将John Doe
字符串赋给它。
空感知运算符让我们的代码更加简洁、易读。使用它可以避免一些重复的null判断代码,从而使我们的代码更加优雅。