if else和return之间有所不同

时间:2016-06-24 15:42:12

标签: c# boolean-expression

我的第一个片段:

public bool isSmall(int x)
{
    if (x == 0)
    {
        return true;
    }
    else
    {
        if (x < Smallest)
        {
            return true;
        }
        else
        {
            return false;
        }
     }
}

我的第二个片段:

public bool isSmall(int x)
{
    if (x == 0)
    {
        return true;
    }

    if (x < Smallest)
    {
        return true;
    }

    return false;
}

我想要的是if (x == 0)只返回true,如果没有做另一次比较,if (x < Smallest),如果true返回true,否则返回false。 我知道我的拳头和第二个代码做同样的事情,但我想知道哪种方式写它更好,更亲切,更安全?他们有什么真正的区别吗?或者只是两种方式来写它?

3 个答案:

答案 0 :(得分:6)

编译器可能会将您的任一个例程优化为以下内容:

public bool IsSmall(int x)
{
   return (x == 0 || x < Smallest);
}

要了解原因,请写出&amp;为每组方法填写一个布尔真值表。

答案 1 :(得分:1)

他们做同样的事情。如果代码是直接编写为编写的,那么第二个可能会稍微高效一些(因为省略了其他的一个分支语句)。但是,所有现代编译器都会优化它以使它们完全相同。

要回答你的问题(这是更好的),你更容易阅读和理解,因为他们做同样的事情。

答案 2 :(得分:1)

两者都是可读的,但从不同的角度来看。

第一个更安全,因为更具可读性(可读性方面可以阅读并更容易说明)

我通常使用第二个,它看起来更干净(看起来更可读但更难理解)

关于可读性;对于少量的if-else,第一个更好但是if-else(如10)的第二个更好。