在C#中,为了避免空引用(NullReferenceException),你可以采取以下几种方法:
-
使用空合并运算符(Null Coalescing Operator):
当你可以预期一个变量可能为空时,可以使用空合并运算符(
??
)来提供一个默认值。这样可以确保变量在使用之前已经被赋予了一个非空的值。例如:
string name = user?.Name ?? "Unknown";
在这个例子中,如果
user
为null,那么name
将被赋值为"Unknown"。 -
使用空条件运算符(Null Conditional Operator):
当你需要调用一个方法或访问一个属性,但你可以预期该方法或属性可能为空时,可以使用空条件运算符(
?.
)。这样可以避免在空引用上调用方法或访问属性时抛出异常。例如:
string name = user?.Name;
在这个例子中,如果
user
为null,那么name
将被赋值为null,而不是抛出异常。 -
使用非空类型(Non-nullable Types):
在C# 8.0及更高版本中,你可以使用非空类型(
non-nullable
)来明确表示一个变量不能为空。这可以通过在类型后面加上!
符号来实现。例如:
public string Name { get; set; }
在这个例子中,
Name
属性被声明为非空类型,这意味着它不能为空。如果尝试将其设置为null,编译器将报错。 -
使用空值检查(Null Check):
在使用一个变量之前,你可以检查它是否为空。如果为空,你可以采取适当的措施,例如抛出一个异常、返回一个默认值或者使用空合并运算符(
??
)提供一个默认值。例如:
if (user != null) { string name = user.Name; } else { string name = "Unknown"; }
在这个例子中,我们首先检查
user
是否为空。如果不为空,我们访问user.Name
。否则,我们将name
赋值为"Unknown"。