带有布尔返回的方法

Posted

技术标签:

【中文标题】带有布尔返回的方法【英文标题】:Method with a bool return 【发布时间】:2012-09-19 10:23:24 【问题描述】:

我正在创建一个返回值为bool 的方法,但遇到了问题:

这行得通

private bool CheckAll()

  //Do stuff
  return true;

但这不是,如果返回值在 IF 语句中,则该方法无法检测到该返回值。

private bool CheckAll()

  if (...)
  
    return true;
  

我该如何解决这个问题?

【问题讨论】:

所有代码分支都应该返回一些值,例如如果 if 中的条件为假,编译器不知道在这种情况下要返回什么。您应该在 if 块之外显式指定返回(默认)值。 【参考方案1】:
private bool CheckAll()

    if ( ....)
    
        return true;
    

    return false;

当 if 条件为 false 时,该方法不知道应该返回什么值(您可能会收到类似“并非所有路径都返回值”的错误)。

作为CQQL pointed out,如果你的意思是在你的if条件为真时返回真,你可以简单地写:

private bool CheckAll()

    return (your_condition);

如果您有副作用,并且想在返回之前处理它们,则需要第一个(长)版本。

【讨论】:

【参考方案2】:

长版:

private bool booleanMethod () 
    if (your_condition) 
        return true;
     else 
        return false;
    

但是由于您使用条件的结果作为方法的结果,您可以将其缩短为

private bool booleanMethod () 
    return your_condition;

【讨论】:

【参考方案3】:
     public bool roomSelected()
    
        int a = 0;
        foreach (RadioButton rb in GroupBox1.Controls)
        
            if (rb.Checked == true)
            
                a = 1;
            
        
        if (a == 1)
        
            return true;
        
        else
        
            return false;
        
    

这就是我解决问题的方法

【讨论】:

【参考方案4】:

一种更简单的解释方式,

public bool CheckInputs(int a, int b)
public bool condition = true;

if (a > b || a == b)

   condition = false;

else

   condition = true;


return condition;

【讨论】:

【参考方案5】:

您缺少其他部分。如果所有条件都为假,则 else 将在您尚未声明并从 else 分支返回任何内容的地方工作。

private bool CheckALl()

  if(condition)
  
    return true
  
  else
  
    return false
  

【讨论】:

【参考方案6】:

使用此代码:

public bool roomSelected()

    foreach (RadioButton rb in GroupBox1.Controls)
    
        if (rb.Checked == true)
        
            return true;
        
    
    return false;

【讨论】:

【参考方案7】:

当你问这个问题时,我确信这些选项在 C# 中都不可用,但现在你可以这样做:

// Return with ternary conditional operator.
private bool CheckAll()

    return (your_condition) ? true : false;


// Alternatively as an expression bodied method.
private bool CheckAll() => (your_condition) ? true : false;

【讨论】:

这不会编译。请不要提供无效的 C# 代码。

以上是关于带有布尔返回的方法的主要内容,如果未能解决你的问题,请参考以下文章

比较两个带有条件的Poleas布尔列

为啥这个带有布尔变量的函数不起作用?

Scala:使用带有布尔方法的 jOOQ DSL

从调用 Int 的方法返回布尔值

一种返回布尔值的方法,该布尔值标识两个数组的值是不是相同

java布尔方法返回语句