Menu
CoddyTech

防御式编程

本课属于 Coddy C# 学习旅程的“逻辑与流程”单元。第 34 课,共 66 课。

防御性编程是一种有助于防止空引用导致错误的技术。它会在尝试使用对象之前检查值是否为空。

使用对象前,先检查它是否为 null:

string name = GetNameFromSomewhere();

// 防御性检查
if (name == null)
{
    // 处理 null 的情况
    name = "Default Name";
}

// 现在可以安全地使用 name 了
Console.WriteLine(name.ToUpper());

在方法中验证参数:

public void ProcessOrder(Order order)
{
    // 检查参数是否为 null,防止出错
    if (order == null)
    {
        Console.WriteLine("Error: Order cannot be null");
        return;
    }
    
    // 现在可以安全地处理订单了
    Console.WriteLine("Processing order: " + order.Id);
}

使用条件访问运算符 (?.),让 null 检查更简洁:

Customer customer = GetCustomerFromSomewhere();

// 不要这样写:
// string city = null;
// if (customer != null && customer.Address != null)
// {
//     city = customer.Address.City;
// }

// 改用这种写法:
string city = customer?.Address?.City;
challenge icon

挑战

简单

创建一个名为 ProcessUserData 的方法,它接受一个字符串参数 userData。该方法应:

  1. 检查 userData 是否为 null。如果是,打印 "Error: User data is null" 并返回。
  2. 检查 userData 是否为空。如果是,打印 "Error: User data is empty" 并返回。
  3. 如果数据有效,将其转换为大写并打印 "Processing: [UPPERCASE_DATA]"。

亲手试试

using System;

class ProcessUserData
{
    public static void processUserData(string userData)
    {
        // 提示:应将字符串 "null" 视为真正的 null 值。
        
        // 在这里编写你的代码。
    }
}
quiz icon自我测试

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

逻辑与流程中的所有课

自己练习: C# 在线编译器