1

タイトルにあるようにエラーが発生し続けますが、何があっても l の値が返されるようです。ここでの問題は何ですか?変更がない場合、 out l を処理するelseステートメントがあります。

    public int validate(int zip, int i, out int l)
{
    if ((zip < 10000) || (zip > 99999))
    {

        Console.WriteLine("Input not accepted. Zips are 6-digits long.");
        error = true;

    }
    else {
        listzip[i] = zip;
        error = false; }

    for (int g = 1; (g <= (i - 1)); g++)
    {
        if (listzip[i] == listzip[g])
        {
            Console.WriteLine("Repeated zip detected, please re-enter.");
            if (!error) error = true;
        } else error = false;
    }


    if (error)
    {
        l = i--; // forces a step back if an error was detected
    }else l = i;
}
4

3 に答える 3

4

メソッドの戻り値の型はintであるため、メソッドから値を返す必要がありintます。returnステートメントを使用して値を返す必要があります (リンクを参照) 。

メソッドのシグネチャが である場合、ステートメントは必要public void validate(...)ありません。return

于 2013-02-16T18:14:09.863 に答える
1

メソッドの戻り値の型は ですがint、メソッドには戻り値がありません。

メソッドから値を返したくない場合は、戻り値の型を として定義しますvoid。お気に入り;

public void validate(int zip, int i, out int l)
{
  // No need return statement
}

からの返品明細書をチェックしてくださいMSDN

return ステートメントは、それが表示されているメソッドの実行を終了し、呼び出し元のメソッドに制御を返します。オプションの値を返すこともできます。メソッドがvoid型の場合、return ステートメントは省略できます。

于 2013-02-16T18:15:43.823 に答える
1

メソッドは、C# コンパイラが値を期待するように宣言されてreturnintます。しかし、コードの見た目から、戻り値の型voidint.

public void validate(int zip, int i, out int l)
{
    if ((zip < 10000) || (zip > 99999))
    {
        Console.WriteLine("Input not accepted. Zips are 6-digits long.");
        error = true;
    }
于 2013-02-16T18:18:21.400 に答える