【C#エラー】値を返さないコード パスがあります。解決方法【CS0161】

C#,エラー/例外

「値を返さないコード パスがあります。」コンパイルエラーの解決方法

C#で発生するエラー
CS0161: 値を返さないコード パスがあります。

上記のコンパイルエラーが発生したときの解決方法をご紹介します。

下記にC#で発生する例外処理の一覧をまとめていますので解決できない場合は合わせてご確認ください。
⇒例外処理クラス一覧まとめ【原因と解決方法】

C#のおすすめ講座を受講して、最短1週間でC#をマスターしよう!
⇒C#が学べるおすすめプログラミングスクール&オンライン講座11選

【C#】CS0161:値を返さないコード パスがあります。のエラーの原因

CS0161: 値を返さないコード パスがあります。
のコンパイルエラーの原因は
作成したメソッドから値が返却されない
からです。


エラーコードの例を見て具体的に確認してみましょう。

public int AdditionNumber(int x,int y)
{
    // 足し算を行うメソッド
    int number = x + y;
}

上記は、引数で渡された二つのint型変数を足し算するメソッド。

このメソッドでエラーが発生します。
エラーの理由は、作成したメソッドに戻り値returnの処理が実装されていないからです。

メソッドの動きは大きく二種類に分けられます。
・戻り値無し(void)
・戻り値あり(return)

・戻り値無し(void)

public void AdditionNumber(int x,int y)
{
    // ↑publicの後ろにvoidが記載されているとエラーは出ない
    int number = x + y;
}

戻り値無しのメソッドはpublicの後に「void」を記載します。
「void」を記載することで、値を返却しないメソッドを定義することができます。

・戻り値あり(return)

public int AdditionNumber(int x,int y)
{
    int number = x + y;
    return number;
}

publicの後に「void」を記載しない場合は、戻り値ありのメソッドとなります。
戻り値ありの場合は、メソッドの終了時に「return」を記載しないとエラーが発生します。

戻り値ありのメソッドの場合、return処理が必須です。
このようにreturnの処理を記載しないと「CS0161: 値を返さないコード パスがあります。とコンパイルエラーが発生するのです。

return処理を追加しないと、コンパイルエラーとなる

「CS0161: 値を返さないコード パスがあります。」の詳細はこちらから

【C#】CS0161:値を返さないコード パスがあります。エラーの解決方法

CS0161: 値を返さないコード パスがあります。のエラーを解決する方法をご紹介します。

return処理を追加する

public int AdditionNumber(int x,int y)
{
    int number = x + y;
    // publicの後ろにvoidがない、戻り値ありのメソッドなので、return処理を追加する。
    return number ;
}

上記のようにreturn処理を追加するとエラーが解消されます。

return処理を追加するとコンパイルエラーが解消される。

下記は全体のプログラムです。
参考にしてみてください。

using System;

namespace compileErrorLecture
{
    class Program
    {
        static void Main(string[] args)
        {
            // int型変数「additionNumber」に、returnで返却された値が代入される。
            int additionNumber = Program.AdditionNumber(1,3);
            Console.WriteLine(additionNumber);

        }

        public static int AdditionNumber(int x, int y)
        {
            int number = x + y;
            // voidがない戻り値ありのメソッドなので、return処理を追加する。
            return number;
        }
    }
}


【注意】if else~文における「値を返さないコード パスがあります

CS0161: 値を返さないコード パスがあります。エラーが頻繁に発生するのは「if else文」を使用した時です。

public static int AdditionNumber(int x, int y)
{
    bool flg = true;
    if (flg)
    {
        int number = x + y;
        return number;
    }
    else
    {
        // 戻り値を返さない処理。
        // 戻り値がない処理ルートが存在するためエラーとなる
    }
}

else{}内の処理が走った場合戻り値がないメソッドとなるのでエラーが発生します。
頻繁に発生するエラーになりますのでif else文を実装するときは注意しましょう。





エラーを解決できなくて途方に暮れている人へ。

■無料プログラミング講座を開設しています!
下記にVisual Studioを使ったC#プログラミング初心者向け完全ガイドを掲載しています。

このガイドを一通り勉強すれば、C#プログラミングの基礎が学べます。
是非チャレンジしてみてください!

C#初心者向けに始め方ガイドを作成しています。
筆者

プログラミング初心者の方はぜひチャレンジしてみてください!!

C#,エラー/例外

Posted by 9noike