更多关于if语句的简短代码

mjk*_*026 5 c# if-statement

我想尝试以下代码:

//all arrays are List<T> type.
if (m.terms[0] != null && m.terms[0].labels != null && m.terms[0].labels[0].title == "Part-of-speech")
{
    result = true; 
}
Run Code Online (Sandbox Code Playgroud)

但在以下情况下偶尔会发生运行时错误

一世.m.terms == null

II.m.terms!= null,但是m.terms [0]没有初始化.

III.m.terms!= null,并且m.terms [0]已存在,但m.terms [0] .label未初始化.

...

所以我修改它像这样:

if (m.terms[0] != null)
{
    if (m.terms[0].labels != null)
    {
        if (m.terms[0].labels[0].title == "Part-of-speech") { result = true; }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是最好的方式吗?

Ant*_*ram 7

&& 是一个短路操作符,所以你编写它的第一种方式和第二种方式在功能上是等价的.

if (a && b && c)
{
    // work 
}
Run Code Online (Sandbox Code Playgroud)

b只有在a返回true 时才会被评估.(同样如此c).

在您的代码中,检查m.terms[0].labels不会成为问题,因为如果m.terms[0]已经为null,您将从表达式中短路.

要完全覆盖你自己,你会想可能增加检查mm.terms,但是.

m != null && m.terms != null && m.terms.Count > 0 && m.terms[0] != null ...
Run Code Online (Sandbox Code Playgroud)

当它从左到右进行评估时,它将在第一个未通过的条件下中断,其余条件将取消选中.