C# - 包含抛出 null 异常

Ven*_*kat 0 c#

我的代码

 string? SegroupOf;

 if(SegroupOf.Contains("Team"))
 {
    
 }
Run Code Online (Sandbox Code Playgroud)

如果 SegroupOf 为 null,则会抛出错误。空值如何处理?我已将 SegroupOf 指定为可为空,如何确保即使其为空也不会引发任何错误

Him*_*ere 5

您可以像这样使用空条件运算符:

if(SegroupOf?.Contains("Team") == true)
Run Code Online (Sandbox Code Playgroud)

然而,当SegroupOf?.Contains返回 abool?而不是 时bool,您需要将结果与bool-value进行比较true

您也可以只使用老式的空检查:

if(Segroup != null && Segroup.Contains("Team"))
Run Code Online (Sandbox Code Playgroud)

然而,这略有不同,因为空条件是短路的,意味着Segroup仅被访问一次,而在第二种情况下,它被访问两次。