1

我可以像使用 if/then/else 一样有效地使用一个语句切换布尔值吗?

在进入我的应用程序的另一段代码中找到了这个......

    private void whatever()
    {
        ////
        //// a bunch of stuff
        ////

        if (SomeBooleanValue)
        {
            SomeBooleanValue= false;
        }
        else
        {
            SomeBooleanValue = true;
        }
    }

出于好奇,我尝试了这个...

    private void whatever_whatever()
    {
        //// 
        //// the same stuff
        //// 

        SomeBooleanValue = !SomeBooleanValue;
    }

...并在调试中遍历它,看来我得到了相同的结果。

是否有充分的理由使用 if/then/else 而不是单行方式?

4

5 回答 5

4

是否有充分的理由使用 if/then/else 而不是单行方式

没有我能想到的。对于大多数程序员来说,使用!运算符更简洁、更直观。

于 2013-01-14T22:34:12.483 回答
3

1 行方式非常好,您使用该结构的唯一原因if/ else是除了切换布尔值之外,您还在做其他事情。

于 2013-01-14T22:35:04.640 回答
2

我会说第二个更好,因为它更具可读性和紧凑性(if/then/else IMO 只是添加了不必要的代码行),这将是唯一(但很强大!)理由更喜欢另一个

于 2013-01-14T22:33:47.510 回答
2

由于编译器优化,它将与使用 ! 运算符,对于其他程序员来说更容易阅读。

然而,

为了提高性能,CPU 会尝试提前预测执行逻辑。对于条件(if/else)语句,它将尝试预测条件的结果,然后加载其余的逻辑。如果选择不正确,则必须返回并重新计算所有内容,从而降低性能。

http://en.wikipedia.org/wiki/Branch_predictor

于 2013-01-14T22:39:04.123 回答
1

请,请,请把代码写成否定;它是最简洁明了的意图表达。如果您以第一种方式编写代码,您的代码的每个读者都会浪费时间想知道您为什么不编写简单的否定。

大多数代码会被你和其他人阅读,比它写的次数要多得多。编写简化阅读过程的代码,几乎按照定义,就是好代码。

于 2013-05-31T01:22:18.033 回答