Menu
CoddyTech

基础空安全

本课属于 Coddy Dart 学习旅程的“基础知识”单元。第 14 课,共 94 课。

空安全通过控制哪些变量可以为空(null),帮助防止应用意外崩溃。

默认情况下,变量必须包含一个值:

void main() {
  String name = 'Dart';
  print(name);  // 输出:Dart
  
  // 这样会出问题:
  // name = null;  // 不允许
}

在类型后添加 ?,以允许 null 值:

void main() {
  String? name = 'Dart';
  print(name);  // 输出:Dart
  
  // 现在可以赋值为 null
  name = null;
  print(name);  // 输出:null
}

你可以声明任何类型的可空变量:

void main() {
  int? age;  // 没有初始值,默认为 null
  double? price = 19.99;
  bool? isAvailable = true;
  
  print(age);         // 输出:null
  print(price);       // 输出:19.99
  print(isAvailable); // 输出:true
  
  // 我们可以把其中任意一个改为 null
  price = null;
  isAvailable = null;
}

 

空安全有助于保护你的应用,避免代码在操作中尝试使用 null 值时发生意外崩溃。

challenge icon

挑战

入门

编写一个 Dart 程序,使用 ? 运算符演示基本的空安全:

  1. 声明一个名为 username 的 String 变量,并使用空安全运算符 ? 将其设为 null(String?)
  2. 声明一个名为 userAge 的 int 变量,并使用空安全运算符将其设为 null
  3. 按照以下确切格式打印这两个变量及其标签:
Username: null
User age: null

然后:

  1. 将值 "DartLearner" 赋给 username 变量
  2. 将值 25 赋给 userAge 变量
  3. 再次按照与之前完全相同的格式打印这两个变量

你的输出必须与上面显示的确切格式一致。

亲手试试

void main() {
  // 在这里声明你的可空变量
  String? username = ?;
  int? userAge = ?;
  
  // 打印初始值并加上标签
  print("Username: " + username.toString());
  print("User age: " + userAge.toString());
  
  // 给变量赋新值
  username = ?;
  userAge = ?;
  
  // 用相同的标签打印更新后的值
  print("Username: " + username.toString());
  print("User age: " + userAge.toString());
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: Dart 在线编译器