编写更精致和简化的空检查c#

Dre*_*Dre 1 c# null nullable null-check

我有以下代码,

bool HasPassed= (result!= null && result.Identifier.Equals("Passed"))? true : false
Run Code Online (Sandbox Code Playgroud)

这工作得很好,但我想知道是否可以以更好、更简化的方式编写这段代码,也许使用?运算符(或空合并运算符)。我仍在学习这一点,不太明白在这种情况下如何使用它。以下是一个用于测试的最小项目,非常感谢任何建议!

Result result = new Result();
//result.Identifier = "Passed";
result = null;
bool HasPassed = (result != null && result.Identifier.Equals("Passed")) ? true : false;

public class Result
{
    public string Identifier { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 8

首先,任何时候你有表格的条件condition ? true : false,你都可以将其替换为condition

所以你可以从以下开始:

bool HasPassed= (result!= null && result.Identifier.Equals("Passed"));
Run Code Online (Sandbox Code Playgroud)

然后,您可以删除括号并重命名局部变量以遵循 .NET 命名约定:

bool hasPassed = result != null && result.Identifier.Equals("Passed");
Run Code Online (Sandbox Code Playgroud)

最后,使用 null 条件运算符和==字符串重载:

bool hasPassed = result?.Identifier == "Passed";
Run Code Online (Sandbox Code Playgroud)

同样安全,但在我看来更具可读性和简洁性。