bool
戻り値のあるメソッドを作成していて、問題が発生しました。
これは動作します
private bool CheckAll()
{
//Do stuff
return true;
}
しかし、これはそうではありません。IFステートメントにある場合、メソッドは戻り値を検出できません。
private bool CheckAll()
{
if (...)
{
return true;
}
}
どうすればこれを修正できますか?
bool
戻り値のあるメソッドを作成していて、問題が発生しました。
これは動作します
private bool CheckAll()
{
//Do stuff
return true;
}
しかし、これはそうではありません。IFステートメントにある場合、メソッドは戻り値を検出できません。
private bool CheckAll()
{
if (...)
{
return true;
}
}
どうすればこれを修正できますか?
private bool CheckAll()
{
if ( ....)
{
return true;
}
return false;
}
if-condition が false の場合、メソッドはどの値を返す必要があるかわかりません (おそらく、「すべてのパスが値を返すわけではありません」などのエラーが発生します)。
CQQLが指摘したように、if 条件が true のときに true を返すつもりなら、次のように簡単に書くことができます。
private bool CheckAll()
{
return (your_condition);
}
副作用があり、戻る前にそれらを処理したい場合は、最初の (長い) バージョンが必要になります。
ロングバージョン:
private bool booleanMethod () {
if (your_condition) {
return true;
} else {
return false;
}
}
しかし、あなたはメソッドの結果としてあなたの状態の結果を使用しているので、あなたはそれをに短縮することができます
private bool booleanMethod () {
return your_condition;
}
これをもっと簡単に説明すると、
public bool CheckInputs(int a, int b){
public bool condition = true;
if (a > b || a == b)
{
condition = false;
}
else
{
condition = true;
}
return condition;
}
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;
}
}
これが私の問題をどのように解決したか
else の部分がありません。すべての条件が false の場合、else は、else ブランチから何も宣言して返していない場所で機能します。
private bool CheckALl()
{
if(condition)
{
return true
}
else
{
return false
}
}