使用 if/then/else 来翻转布尔值或求反是否更好?

问题描述 投票:0回答:5

我可以用一条语句切换布尔值,就像用 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 而不是单行方式吗?

c# boolean
5个回答
4
投票

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

我想不到。 对于大多数程序员来说,使用

!
运算符更干净、更直观。


3
投票

1 行方式非常好,您使用

if/ else
结构的唯一原因是,除了切换布尔值之外,您还要做其他事情。


2
投票

我想说第二个更好,因为它更具可读性和紧凑性(如果/那么/否则IMO只是添加了不必要的代码行),这将是选择另一个的唯一(但很强烈!)原因


2
投票

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

但是,

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

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


1
投票

拜托,拜托,请将代码写成否定;这是最简洁、最简洁的意图表达。如果您以第一种方式编写代码,那么您代码的每个读者都会浪费时间想知道为什么您没有编写简单的否定。

您和其他人阅读大多数代码的次数要比编写的次数多得多。几乎从定义上来说,编写能够简化阅读过程的代码就是好代码。

© www.soinside.com 2019 - 2024. All rights reserved.