【问题标题】:How to shorten boolean function如何缩短布尔函数
【发布时间】:2017-04-14 22:53:56
【问题描述】:

我必须缩短布尔函数到一行。我是 C# 的初学者,我不知道如何缩短它。

    static bool mod(int number) 
    {
        if (number % 3 == 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

【问题讨论】:

    标签: c# function boolean


    【解决方案1】:
    static bool mod(int number) 
    {
        return number % 3 == 0;
    }
    

    【讨论】:

    • 嗨塞图巴拉;您的代码可能是正确的,但在某些上下文中它会做出更好的答案;例如,您可以解释这个提议的更改如何以及为什么会解决提问者的问题,可能包括指向相关文档的链接。这将使它对他们更有用,对正在寻找类似问题的解决方案的其他网站读者也更有用。
    【解决方案2】:

    简单地使用number % 3 == 0,或者内联,或者作为函数体。如果您确实将其保留为函数,请考虑将函数重命名为 mod_by_3 或类似名称。

    在 C 和 C++ 中,您可以使用更清晰的 !(number % 3)

    【讨论】:

    • Err... 这看起来像 C... 这不会在 C# 中编译或者我错过了什么?
    • @RenéVogt:哎呀,添加了 C# 版本:在某些方面它更优雅,但它是您了解运算符优先级的试金石:乳蛋饼食客可能希望看到 (number % 3) == 0
    【解决方案3】:

    我是赢家? Expression bodied functions are new in C#6

    static bool Mod(int number) => number % 3 == 0;
    

    【讨论】:

    • 这是实现 OP 实际要求的最佳答案。
    • @Botonomous IF 你使用的是 C#6
    • 这接近于 1970 年代发明的语言的优雅。投赞成票。
    • 非常正确,尽管我认为如果没有指定 c# 6 是公平的。考虑到它已经 2 岁了。
    【解决方案4】:

    只需返回if-statement 中的表达式:

    static bool mod(int number) 
    {
        return number % 3 == 0;
    }
    

    【讨论】:

      【解决方案5】:

      你想要这个:

      static bool mod(int number){    
         return number % 3 == 0;
      }
      

      【讨论】:

      • pfft 这不是一行。我们需要完整的代码高尔夫! static bool mod(int n){return n%3==0;} ;)
      • @AlfieGoodacre: :-D :-D :-D
      • 哼。在 cmets 的帮助下,我已经得出了这个答案。赞成,因为您显然是专家。
      • @AlfieGoodacre static bool mod(int n) => n%3==0; 会做
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-06
      • 1970-01-01
      • 1970-01-01
      • 2022-06-19
      • 2011-10-17
      • 2012-01-23
      相关资源
      最近更新 更多