4

bool戻り値のあるメソッドを作成していて、問題が発生しました。

これは動作します

private bool CheckAll()
{
  //Do stuff
  return true;
}

しかし、これはそうではありません。IFステートメントにある場合、メソッドは戻り値を検出できません。

private bool CheckAll()
{
  if (...)
  {
    return true;
  }
}

どうすればこれを修正できますか?

4

7 に答える 7

29
private bool CheckAll()
{
    if ( ....)
    {
        return true;
    }

    return false;
}

if-condition が false の場合、メソッドはどの値を返す必要があるかわかりません (おそらく、「すべてのパスが値を返すわけではありません」などのエラーが発生します)。

CQQLが指摘したように、if 条件が true のときに true を返すつもりなら、次のように簡単に書くことができます。

private bool CheckAll()
{
    return (your_condition);
}

副作用があり、戻る前にそれらを処理したい場合は、最初の (長い) バージョンが必要になります。

于 2012-09-27T15:18:15.103 に答える
4

ロングバージョン:

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

しかし、あなたはメソッドの結果としてあなたの状態の結果を使用しているので、あなたはそれをに短縮することができます

private bool booleanMethod () {
    return your_condition;
}
于 2012-09-27T15:20:06.743 に答える
1

これをもっと簡単に説明すると、

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

if (a > b || a == b)
{
   condition = false;
}
else
{
   condition = true;
}

return condition;
}
于 2015-11-24T15:05:58.500 に答える
1
     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;
        }
    }

これが私の問題をどのように解決したか

于 2014-10-12T17:43:28.367 に答える
0

else の部分がありません。すべての条件が false の場合、else は、else ブランチから何も宣言して返していない場所で機能します。

private bool CheckALl()
{
  if(condition)
  {
    return true
  }
  else
  {
    return false
  }
}
于 2017-02-16T17:39:11.017 に答える