C#のreturn文の役割と使い方!メソッドの戻り値を制御する方法
生徒
「C#で処理の結果を他のところに渡す方法ってありますか?」
先生
「はい、それにはreturn文を使います。メソッド(処理のまとまり)から値を返すための命令です。」
生徒
「なるほど…どんな場面で使うんですか?」
先生
「それでは、return文の基本的な使い方を一緒に学んでいきましょう!」
1. return文とは?
C#のreturn文は、メソッドと呼ばれる一連の処理から結果(値)を呼び出し元に返すための命令です。例えば、計算結果や判断の結果などを他の処理に伝えるために使われます。
「メソッド」とは、複数の処理を1つにまとめたもので、他の場所から呼び出すことができます。メソッドの中でreturnを使うと、その時点でメソッドの処理を終え、指定した値を返します。
2. return文の基本的な書き方
return文の基本形はとてもシンプルです。以下のように書きます:
return 値;
この「値」の部分に返したい数値や文字列などを書きます。
3. 実際のメソッドでreturn文を使ってみよう
ここでは、2つの数字を足して結果を返すメソッドを作ってみます。
int Add(int a, int b)
{
int result = a + b;
return result;
}
このAddメソッドでは、引数(ひきすう)として受け取ったaとbを足して、その合計をreturn文で返しています。
4. メソッドを呼び出して結果を使う
上で定義したAddメソッドを使うには、以下のように呼び出します。
int total = Add(5, 3);
Console.WriteLine("合計は " + total);
合計は 8
Add(5, 3)という呼び出しは、メソッドの中で5 + 3が計算され、結果の8がreturnされて、totalという変数に代入されます。
5. void型メソッドとreturn文
メソッドによっては値を返さないものもあります。その場合、voidという型を使います。
void ShowMessage()
{
Console.WriteLine("こんにちは!");
return;
}
void型のメソッドでは、return文で値を返すことはできません。ですが、メソッドを途中で強制的に終了させたい場合にはreturn;のように単独で使うことができます。
6. return文がないとどうなる?
値を返す必要があるメソッド(たとえばint型など)では、return文を書かないとエラーになります。コンピュータは「このメソッドの結果が何かわからない」と困ってしまうのです。
// 間違った例:return文がない!
int Multiply(int a, int b)
{
int result = a * b;
// returnが必要!
}
このようなコードは、コンパイル(C#プログラムを実行形式に変換)するときにエラーになります。
7. return文は1つだけじゃない!
実は、メソッドの中に複数のreturn文を書くこともできます。たとえば条件によって違う値を返したいときに使います。
string GetGrade(int score)
{
if (score >= 80)
{
return "優秀";
}
else if (score >= 60)
{
return "合格";
}
else
{
return "不合格";
}
}
この例では、点数に応じて異なる文字列を返しています。最初に出会ったreturn文で、メソッドの処理は終わるので、それ以降の処理は実行されません。
8. return文の注意点
- returnは必ず最後に実行されるとは限らない:処理の途中でreturnすると、それ以降の処理はスキップされます。
- void型メソッドに値を返そうとするとエラーになる:返すべきでないメソッドにreturn値を書くとエラーになります。
- returnの型とメソッドの型は一致させる:たとえば
int型のメソッドでは、intの値を返す必要があります。
まとめ
C#のreturn文は、メソッドの処理結果を呼び出し元へ返すために欠かせない重要な命令です。メソッドとは、ある特定の処理をひとまとめにした機能であり、アプリケーション開発では何度も繰り返し利用されます。その中で、処理の結果を戻す手段としてreturnが使われ、プログラム同士の連携や計算の再利用を可能にします。
たとえば、数値計算や判定処理、ユーザー入力に対するメッセージの生成など、日常的なプログラムの中には「結果を返す処理」がたくさんあります。return文を使いこなすことで、処理の分担が明確になり、コードの見通しや再利用性が格段に向上します。
また、returnは処理を終了させる役割も持っており、条件に応じて早めに処理を打ち切ることで、無駄な処理を省き、パフォーマンスを上げることにもつながります。これはとくに複数の条件分岐を含むメソッドにおいて威力を発揮します。
複数の条件で異なる値を返す例
string JudgeTemperature(int celsius)
{
if (celsius >= 35)
{
return "猛暑日です";
}
else if (celsius >= 30)
{
return "真夏日です";
}
else if (celsius >= 25)
{
return "夏日です";
}
else
{
return "それほど暑くありません";
}
}
このようにreturnを複数用いることで、条件に応じた適切な値を柔軟に返すことができます。最初に該当する条件が見つかれば、それ以降のelse ifやelseは評価されず、処理は終了します。
void型メソッドでもreturnは使える?
はい、void型のメソッドでも、処理を早く終えたい場合にはreturn;を使うことができます。値を返すことはできませんが、処理の流れを切り上げたいときに便利です。
void CheckNumber(int num)
{
if (num < 0)
{
Console.WriteLine("マイナスの値です");
return;
}
Console.WriteLine("正の値またはゼロです");
}
この例では、負の値であれば早めにメッセージを出して終了し、それ以外なら次の処理に進むという流れが実現されています。
return文のあるべき使い方とは?
初心者のうちはreturnをどこに書けばいいか迷うこともあるでしょう。しかし、メソッドの型に合った値を返すこと、複数のreturn文があっても最初に実行された時点でメソッドが終了することを理解していれば、自然と使い方は身についていきます。
また、returnを使うことで、結果を変数に代入したり、そのまま別の計算に使ったりと、柔軟にロジックを組み立てることができるようになります。プログラム全体の流れを意識しながら、returnの位置や条件を丁寧に設計することが、質の高いコードへの第一歩です。
最後に、return文はただ値を返すだけではなく、「どこで処理を終えるか」を明確にするという意味でも非常に重要です。コードを読む人にとっても、returnのタイミングがはっきりしていると、理解しやすくなります。
生徒
「return文って、ただ値を返すだけだと思ってたんですけど、処理を終わらせる役割もあるんですね!」
先生
「その通りです。returnは結果を返すだけでなく、“ここで処理を終わりにする”という大切な合図でもあります。」
生徒
「void型でもreturnだけ書けるなんて驚きました。結果がいらなくても、処理を途中で打ち切りたい場面ってありますもんね。」
先生
「そうなんです。たとえば条件によってエラーメッセージだけ出して、それ以上は進めないようにしたいときなどに便利ですね。」
生徒
「これからは、メソッドの中で複数のreturnを書いても大丈夫ってことを覚えておきます!」
先生
「ただし、どのreturnが実行されるかは条件次第なので、ロジックを丁寧に考えることが大切ですよ。」
生徒
「はい!returnをうまく使って、もっと読みやすいコードを書けるようになりたいです!」