带有布尔返回的方法
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# 代码。以上是关于带有布尔返回的方法的主要内容,如果未能解决你的问题,请参考以下文章