在 C# 中,null 是一个特殊的值,表示变量没有引用任何对象。这在处理可能为空的值时非常有用,例如数据库查询结果或用户输入。为了处理空值,C# 提供了 null 关键字和 System.Nullable<T> 类型。
null 关键字:当变量可能为空时,可以使用 null 关键字来表示。例如:
string? myString = null;
int? myInt = null;
这里,myString 和 myInt 都是可空的类型,它们可以分别存储 null 值。要检查一个可空值是否为空,可以使用 ?? 操作符(空合并操作符):
string result = myString ?? "Default String";
int? result2 = myInt ?? 0;
System.Nullable<T> 类型:System.Nullable<T> 是一个泛型类,用于表示可空的值。它的语法如下:
public struct Nullable<T> where T : struct, IConvertible
Nullable<T> 类型有一个名为 HasValue 的布尔属性,用于检查值是否为空。还有一个名为 Value 的属性,用于获取或设置非空值。例如:
int? myInt = 5;
if (myInt.HasValue)
{
Console.WriteLine(myInt.Value); // 输出 5
}
else
{
Console.WriteLine("myInt is null");
}
要检查一个可空值是否为空,可以使用 ?? 操作符(空合并操作符):
int result = myInt ?? 0;
null-conditional 运算符(C# 6 及更高版本):从 C# 6 开始,可以使用 ?. 运算符来简化可空类型的空值检查。例如:
string result = myString?.Substring(0, 1);
如果 myString 为空,result 将被赋值为 null,而不是引发异常。