0

テストスコアに hasPassed() というメソッドを設定しようとしていますが、それができないようです。

私が得ているエラーは次のとおりです。

windowsformapplication1.student.HasPassed()' すべてのコード パスが値を返すわけではありません

これは私のコードです:

public int YearMark
{
    get { return yearMark; }
    set { yearMark = value; }
}

private bool hasPassed;
public bool HasPassed()
{
    if (yearMark < 40)
    {
        hasPassed = false;
    }
    else
    {
        hasPassed = true;
    }
}
4

6 に答える 6

4

値を返すのを忘れましたbool-

public bool HasPassed()
{
   return yearMark >= 40;
}
于 2012-10-24T19:04:13.620 に答える
4

値を返す必要があります。これを試してください:

public bool HasPassed()
{
    return ( yearMark >= 40 )
}
于 2012-10-24T19:06:11.577 に答える
2

どうやらあなたは古いパスカルユーザーですか?hasPassedに割り当てた後、実際に値を返す必要があります。

コードが気に入った場合は、次のようにする必要があります。

public bool HasPassed()
    {
        if (yearMark < 40)
        {
            hasPassed = false;
        }
        else
        {
            hasPassed = true;
        }
        return hasPassed;

    }

または、もっとシンプルにし、一目で理解し続けたい場合は、次のようにします。

public bool HasPassed()
{
    if (yearMark < 40)
    {
        return false;
    }
    return true;       
}
于 2012-10-24T19:04:01.317 に答える
0

メソッドにはboolの戻り値があるため、hasPassedというフィールドを設定するだけでなく、trueまたはfalseを返す必要があります。if内でtrueまたはfalseを返すようにメソッドを変更します

于 2012-10-24T19:04:54.803 に答える
0

修正は、意図したデザインがどのように機能するかによって異なります。関数HasPassed()がのブール値を返すhasPassedことになっている場合は、コードで明示的に返す必要があります。

public bool HasPassed()
    {
        if (yearMark < 40)
        {
            hasPassed = false;
        }
        else
        {
            hasPassed = true;
        }
        return hasPassed;

    }

ただし、HasPassed()プライベート変数の値を変更するだけで、hasPassed実際には何も返さない場合は、関数の戻り値の型を に変更する必要がありますvoid

public void HasPassed()
    {
        if (yearMark < 40)
        {
            hasPassed = false;
        }
        else
        {
            hasPassed = true;
        }
    }
于 2012-10-24T19:09:13.190 に答える
0

hasPassed呼び出し元のメソッドの内容を確認する限り、必ずしも何も返す必要はありません。

private bool hasPassed;
public void HasPassed()
{
    if (yearMark < 40)
    {
        hasPassed = false;
    }
    else
    {
        hasPassed = true;
    }
}

public void Main()
{
    HasPassed();
    if (hasPassed)
    {
         //Do something
    }
}

私がどうするかではなく、別の解決策です。

于 2012-10-24T19:09:33.423 に答える