可空引用类型
可空引用类型是 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 // 关闭
学习小结:以上是我学习这个知识点时的笔记和心得。技术学习没有捷径,多写多练多踩坑,自然就掌握了。如果这篇笔记对你有帮助,欢迎继续看看其他文章。