防御式编程
本课属于 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;挑战
简单创建一个名为 ProcessUserData 的方法,它接受一个字符串参数 userData。该方法应:
- 检查
userData是否为 null。如果是,打印 "Error: User data is null" 并返回。 - 检查
userData是否为空。如果是,打印 "Error: User data is empty" 并返回。 - 如果数据有效,将其转换为大写并打印 "Processing: [UPPERCASE_DATA]"。
亲手试试
using System;
class ProcessUserData
{
public static void processUserData(string userData)
{
// 提示:应将字符串 "null" 视为真正的 null 值。
// 在这里编写你的代码。
}
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: C# 在线编译器