在 C# 中,处理 null 值对于避免常见的运行时错误(如 NullReferenceException)至关重要。本文探讨了 C# 用于管理 null 值的工具,包括 null 合并运算符、可为 null 的类型和集合中的安全做法。
处理 null 值是 C# 编程的一个关键方面,因为忽略它可能会导致 NullReferenceException,这是应用程序中的常见错误。C# 提供了多种工具和功能来有效处理 null 值,有助于提高代码的健壮性和抗错性。
C# 提供了三个运算符,以便更轻松地使用 null:null 合并运算符、null 合并赋值运算符和 null 条件运算符。
这??operator 是 null 合并运算符。它说,“如果左边的操作数是非空的,就把它给我;否则,请给我另一个值。例如:
string s1 = null;
string s2 = s1 ?? "nothing"; // s2 evaluates to "nothing"
这??= 运算符(在 C# 8 中引入)是 null 合并赋值运算符。它说,“如果左侧的操作数为 null,则将右侧操作数分配给左侧操作数。请考虑以下事项:
myVariable ??= someDefault;
这相当于:
if (myVariable == null) myVariable = someDefault;
这??= 运算符在实现惰性计算属性时特别有用。
这?。operator 是 null 条件或“Elvis”运算符(在 Elvis 表情符号之后)。它允许您调用方法和访问成员,就像标准点运算符一样,不同之处在于,如果左侧的操作数为 null,则表达式的计算结果为 null,而不是引发 NullReferenceException:
System.Text.StringBuilder sb = null;
string s = sb?.ToString();
最后一行等效于以下内容:
string s = (sb == null ? null : sb.ToString());
C# 允许值类型(如 、 、 等)可为 null,从而使它们能够表示通常的值范围 plus .这在数据库交互等可能未定义数字的场景中非常有用。intdoublenull
int? myNullableInt = null;
if (myNullableInt.HasValue)
{
Console.WriteLine(myNullableInt.Value);
}
else
{
Console.WriteLine("No value");
}
从 C# 8.0 开始,可为 null 的引用类型允许开发人员批注引用类型是否应处理 null。启用此功能后,如果操作可能导致空引用异常,则会在编译时提供警告,从而促进更安全的编码实践。
#nullable enable
string? nullableString = null;
string nonNullableString = nullableString; // Warning: Dereference of a possibly null reference.
当使用可能包含 null 元素的集合或从数据库获取结果时,正常处理潜在的 null 非常重要。
List<string?> names = new List<string?> { "Alice", null, "Bob" };
foreach (var name in names)
{
Console.WriteLine(name?.ToUpper() ?? "Null value found");
}
处理 null 值对于防止 C# 中的运行时错误至关重要。本文涵盖: