C#如果没有正确的“什么都不做”的语法

时间:2017-11-06 16:12:53

标签: c# syntax

我对编程很新,在我最近的工作中,我创建了以下if if语句嵌套在for循环中:

for (int i = 0; i < originalColumnCells.Count; i++)
{
    if (originalColumnCells[i] == sortedColumnCells[i])
    {
        // Do Nothing
    }
    else
    {
        return false;
    }
}

在if语句中,正如您所看到的,如果语句为true,我希望该方法不执行任何操作。在这种情况下,是否有正确的语法来注释掉“// Do Nothing”,还是应该将其作为开放和封闭的括号?或者也许把括号放在if行的末尾?

任何有关“正确”处理此方法的建议都将受到赞赏

4 个答案:

答案 0 :(得分:8)

为什么不否定表达?

for (int i = 0; i < originalColumnCells.Count; i++)
{
    if (originalColumnCells[i] != sortedColumnCells[i])
    {
        return false;
    }
}

答案 1 :(得分:4)

将if语句更改为!=并一起删除else:

if (originalColumnCells[i] != sortedColumnCells[i])
{
   return false;
}
// No else

答案 2 :(得分:1)

您可以反转声明:

if (originalColumnCells[i] != sortedColumnCells[i])

但接下来是别的。有时你想表明你已经考虑过else分支的需要,但你不需要它。 (如果我有更复杂语句的代码块,我有时会想要一个)然后我认为在这些方面使用的东西很好:

else
{
    // no action, already handled later on in bla bla
}

答案 3 :(得分:1)

一般来说,你想解释一些不寻常的事情。

{

}  

这应该是空的吗?有什么东西被删除了?最好明确表达你的意图:

{
    // do nothing
}  

但是 - 一般而言 - 你可能想要改变你的if语句,这样你就不会以空语句结束。我看到几个答案说要将比较从==更改为!=。但是,像

这样的声明怎么样?
if (a > b && c == d || Object.ReferenceEquals(null, e)) ...  

为了反转这一点,您可以将>更改为<=,将==更改为!=,更改&&||运算符等我用!反转整个语句而不是尝试更改每个比较运算符,我觉得最简单:

if (!(a > b && c == d || Object.ReferenceEquals(null, e))) ...