2

--> エラー 'Minesweeper.Game.Gewonnen()': すべてのコード パスが値を返すわけではありません。

私は何を間違っていますか?

public bool Gewonnen()
{

  for (int y = 0; y < _boolArray.GetLength(0); y++)
  {
    for (int x = 0; x < _boolArray.GetLength(1); x++)
    {
      if (_boolArray[x, y] == false)
        return false;

      else
        return true;
    }
  }
}
4

3 に答える 3

8

つまり、考えられるすべての実行パスが値を返すわけではありません。あなたの例では、ループは一度も実行されない場合があり(_boolArray長さが0の場合)、その場合、メソッドは何も返しません。return falseメソッドの最後に追加します。

public bool Gewonnen() 
{
    for (int y = 0; y < _boolArray.GetLength(0); y++)
    {
         for (int x = 0; x < _boolArray.GetLength(1); x++)
         {
              if (_boolArray[x, y] == false)
                  return false;
              else
                  return true;
         }
    }

    return false;
}
于 2013-11-07T09:20:20.183 に答える
1

gzaxx ソリューションがコンパイルされます。とにかく、それがあなたが望むものかどうかはわかりません。その場合、最初の反復の後に常に返されるからです(もしあれば)。これが別の試みです(役立つことを願っています):

public bool Gewonnen()
{

  for (int y = 0; y < _boolArray.GetLength(0); y++)
  {
    for (int x = 0; x < _boolArray.GetLength(1); x++)
    {
      if (_boolArray[x, y] == false)
        return false;
    }
  }

  return true;  //this mean _boolArray has no false value
}
于 2013-11-07T09:28:00.377 に答える