ホームページ > バックエンド開発 > C++ > なぜ私のC#コードが「すべてのコードパスが値を返すわけではない」エラーを生成するのですか?

なぜ私のC#コードが「すべてのコードパスが値を返すわけではない」エラーを生成するのですか?

DDD
リリース: 2025-02-01 11:16:09
オリジナル
132 人が閲覧しました

Why Does My C# Code Produce a

c#コンパイラ問題:処理値によって返されるすべてのコードパス

与えられた整数を1〜20の間に各数値で削除できるかどうかを判断しようとすると、開発者はコンテンツが「すべてのコードパスを返すわけではない」というエラーメッセージに遭遇します。

コードチェック

次のコードをチェックした後、コンパイラエラーは明らかです。

問題は、関数本文の2つの返品ステートメントのみから発生しています。これらのステートメントは削除されないか、1〜20のすべての数値で削除することはできません。ただし、コンパイラは、値を返すために関数内のすべての可能な実行パスを必要とします。

<code class="language-c#">{
    for(int j = 1; j <= 20; j++)
    {
        if(num % j != 0)
        {
            return false;
        }
        else if(num % j == 0 && num == 20)
        {
            return true;
        }
    }
}</code>
ログイン後にコピー
solution

このエラーを解決するには、残りの実行パスを処理するために別の返品ステートメントをコードに追加する必要があります。このパスは、サイクルが完了しており、1〜20に削除できる数値の数を見つけることができないことを示しています。

次のコードには、すべての可能なコードパスが返されるようにするための返品ステートメントがないことが含まれています。

改善されたソリューション説明:元のコードの

は厳しすぎる。

が20に等しく、同時に削除された場合に
<code class="language-c#">{
    for(int j = 1; j <= 20; j++)
    {
        if(num % j != 0)
        {
            return false;
        }
        else if(num % j == 0 && num == 20)
        {
            return true;
        }
    }

    return true;  //添加了缺少的 return 语句,  此处应为true,表示可以被1-20整除
}</code>
ログイン後にコピー
を返すことができる場合にのみ。 が20の倍数であるが20を超える場合、コードは値を返しません。 したがって、正しいコードは、サイクルが終わった後にデフォルトで

を返す必要があり、各数値が1〜20の間で削除できることを示します。 は、サイクルがサイクルで見つかった場合にのみ返されます。

以上がなぜ私のC#コードが「すべてのコードパスが値を返すわけではない」エラーを生成するのですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート