2024-07-22 · C# 基础 · 学习笔记

可空引用类型

可空引用类型是 C# 8 的特性,开启 #nullable enable 后,string 和 string? 有了区别:string 不能为空,string? 可以为空。编译器会在你没判断 null 就解引用时警告。

这是非常有用的编译期检查,能在开发阶段就发现 NullReferenceException。自己开启后发现了很多潜在的空引用 bug。

注意事项:1) 这只是编译时警告,运行时还是会 null;2) ! 运算符(null-forgiving)告诉编译器"这里不会空",要慎用;3) 逐步开启,不要一次性全项目强制。

代码示例

#nullable enable

// string? 表示可能为空
public class User
{
    public string Name { get; set; } = "";       // 不能为空
    public string? Nickname { get; set; }          // 可以为空
    public Address? Address { get; set; }          // 可以为空
}

// 编译器帮你检查
public void PrintUser(User u)
{
    // Console.WriteLine(u.Nickname.Length); // 警告:可能为 null

    if (u.Nickname != null)
        Console.WriteLine(u.Nickname.Length); // OK

    // null 条件运算符
    int? len = u.Nickname?.Length; // 可能为 null

    // null 合并
    string displayName = u.Nickname ?? u.Name;
}

#nullable disable // 关闭
学习小结:以上是我学习这个知识点时的笔记和心得。技术学习没有捷径,多写多练多踩坑,自然就掌握了。如果这篇笔记对你有帮助,欢迎继续看看其他文章。