2024-01-15 · C# 基础 · 学习笔记

C# 可空类型 nullable 入门

C# 的值类型默认不能为 null,但数据库字段、API 返回经常有可空情况,这时候就要用可空类型。int? 本质是 System.Nullable<int> 的语法糖,它比普通 int 多了两个属性:HasValue 和 Value。

刚学时最常犯的错就是直接访问 .Value,当 HasValue 为 false 时会抛 InvalidOperationException。正确做法是先判断 HasValue,或者用 GetValueOrDefault() 在没有值时返回默认值。用 ?? 运算符提供默认值也是常用写法。

实践建议:1) 数据库可空字段对应 int? 而不是 int;2) 不要在热路径频繁访问 .Value;3) 开启 #nullable enable 后,string? 和 string 有区别,编译器会帮你检查。

代码示例

int? age = null;

// 方法一:判断 HasValue
if (age.HasValue)
    Console.WriteLine(age.Value);

// 方法二:GetValueOrDefault(推荐,安全)
int safe = age.GetValueOrDefault(); // 0

// 方法三:?? 提供默认值
int real = age ?? 18;
Console.WriteLine(real); // 18

// 配合 ??= 更简洁
age ??= 18;
学习小结:以上是我学习这个知识点时的笔记和心得。技术学习没有捷径,多写多练多踩坑,自然就掌握了。如果这篇笔记对你有帮助,欢迎继续看看其他文章。