C#のメソッドの引数と戻り値とは?Studentクラスで理解しよう
前回の記事「C#のメソッドとは?StudentクラスのShowScore()から理解しよう」では、処理に名前を付けて呼び出す方法を学びました。
今回は、その続きとして引数と戻り値を学びます。
引数と戻り値を使えるようになると、メソッドの外から値を渡したり、メソッドの処理結果を受け取ったりできるようになります。
前回のShowScoreメソッドを振り返る
前回は、Studentクラスの中に次のメソッドを作りました。
public void ShowScore()
{
Console.WriteLine($"{Name}さんの点数は{Score}点です。");
}
呼び出すときは、次のように書きます。
student1.ShowScore();
このメソッドは、外から値を受け取らず、呼び出し元へ結果を返しません。丸かっこの中が空なので引数なし、voidなので戻り値なしのメソッドです。
引数と戻り値のイメージ
メソッドを小さな処理装置として考えてみましょう。
値を渡す → メソッドが処理する → 結果を返す
引数 戻り値
引数はメソッドへ渡す値、戻り値はメソッドから返される値です。すべてのメソッドに両方が必要なわけではありません。目的に応じて、引数だけを使ったり、戻り値だけを使ったり、両方を使ったりします。

引数を使って合格点を渡す
まずは、引数を使うメソッドを作ります。合格点を外から受け取り、合格か不合格かを表示するShowResultメソッドです。
public void ShowResult(int passingScore)
{
if (Score >= passingScore)
{
Console.WriteLine($"{Name}さんは合格です。");
}
else
{
Console.WriteLine($"{Name}さんは不合格です。");
}
}
この部分に注目してください。
int passingScore
passingScoreには、呼び出す側から渡された合格点が入ります。型はintなので、整数を受け取ります。
引数のあるメソッドを呼び出す
合格点を60点にする場合は、次のように呼び出します。
student1.ShowResult(60);
丸かっこの中に書いた60が、passingScoreへ入ります。
student1.ShowResult(60);
↓
passingScoreに60が入る
student1の点数が80点なら、80 >= 60は成立するので「田中さんは合格です。」と表示されます。

引数を使うメリット
引数を使うと、呼び出すときに条件を変えられます。
student1.ShowResult(60);
student1.ShowResult(90);
同じstudent1でも、合格点が60点なら合格、90点なら不合格です。メソッドを作り直さなくても、渡す値によって処理を変えられます。
「引数」と「パラメーター」の違い
初学者向けの説明では、どちらもまとめて「引数」と呼ばれることがあります。厳密には、メソッドを作る側のpassingScoreを仮引数(パラメーター)、呼び出す側の60を実引数と呼びます。
// passingScoreは仮引数
public void ShowResult(int passingScore)
// 60は実引数
student1.ShowResult(60);
まずは「丸かっこの中を使って、メソッドへ値を渡せる」と理解できれば大丈夫です。
戻り値を返すメソッド
次は、メソッドから値を返してみましょう。生徒の点数を返すGetScoreメソッドを作ります。
public int GetScore()
{
return Score;
}
前回のShowScore()ではvoidを使いましたが、今回はintになっています。
public int GetScore()
これは「int型の値を返すメソッド」という意味です。そして、値を返すときに使うのがreturnです。
return Score;
戻り値を受け取る
GetScore()が返した値は、変数に入れて使えます。
int result = student1.GetScore();
Console.WriteLine(result);
student1のScoreが80なら、処理の流れは次のようになります。
student1.GetScore()を呼び出す
↓
return Score;で80を返す
↓
resultに80が入る
戻り値は、変数に入れるだけでなく、条件式や別のメソッドの引数として使うこともできます。
voidとの違い
voidは、呼び出し元へ値を返さないという意味です。
public void ShowScore()
{
Console.WriteLine(Score);
}
一方、戻り値の型にintを書いたメソッドは、int型の値を返す必要があります。
public int GetScore()
{
return Score;
}
ShowScore()は表示まで行うメソッド、GetScore()は値を返して使い方を呼び出し側へ任せるメソッドです。
引数と戻り値を組み合わせる
最後に、引数と戻り値の両方を使います。指定された合格点以上かどうかを判定するIsPassedメソッドを作りましょう。
public bool IsPassed(int passingScore)
{
return Score >= passingScore;
}
このメソッドには、次の4つのポイントがあります。
int passingScoreで合格点を受け取るScore >= passingScoreで点数を比較するbool型の結果を返すreturnでtrueまたはfalseを返す

IsPassedメソッドを呼び出す
bool result = student1.IsPassed(60);
if (result)
{
Console.WriteLine("合格です。");
}
else
{
Console.WriteLine("不合格です。");
}
student1の点数が80点なら、student1.IsPassed(60)の戻り値はtrueです。そのため「合格です。」と表示されます。
変数を使わず、戻り値をそのままif文の条件にすることもできます。
if (student1.IsPassed(60))
{
Console.WriteLine("合格です。");
}
完成したコード
using System;
namespace StudentClassTutorial
{
internal class Program
{
static void Main(string[] args)
{
Student student1 = new Student();
student1.Name = "田中";
student1.Score = 80;
student1.ShowScore();
student1.ShowResult(60);
int score = student1.GetScore();
Console.WriteLine($"取得した点数: {score}");
bool result = student1.IsPassed(60);
if (result)
{
Console.WriteLine("合格です。");
}
else
{
Console.WriteLine("不合格です。");
}
}
}
class Student
{
public string Name;
public int Score;
public void ShowScore()
{
Console.WriteLine($"{Name}さんの点数は{Score}点です。");
}
public void ShowResult(int passingScore)
{
if (Score >= passingScore)
{
Console.WriteLine($"{Name}さんは合格です。");
}
else
{
Console.WriteLine($"{Name}さんは不合格です。");
}
}
public int GetScore()
{
return Score;
}
public bool IsPassed(int passingScore)
{
return Score >= passingScore;
}
}
}
実行結果は次のようになります。
田中さんの点数は80点です。
田中さんは合格です。
取得した点数: 80
合格です。
よくある間違い
引数を渡し忘れる
// passingScoreが必要なのでエラー
student1.IsPassed();
// 正しい呼び出し
student1.IsPassed(60);
引数の型を間違える
// intを受け取るメソッドに文字列は渡せない
student1.IsPassed("60");
戻り値の型とreturnする値が違う
public bool IsPassed(int passingScore)
{
// boolを返すメソッドなのでintは返せない
return Score;
}
戻り値があるのにreturnを書かない
戻り値の型がvoid以外なら、その型に合う値を返す必要があります。
public int GetScore()
{
return Score;
}
メソッド名から役割を読み取ろう
メソッド名には、その役割が分かる名前を付けることが大切です。
ShowScore():点数を表示するGetScore():点数を取得するIsPassed():合格しているかを調べる
Isから始まる名前は、trueまたはfalseを返すメソッドによく使われます。IsPassed()という名前を見るだけで、「合格しているかどうかを返すのだな」と予想できます。
まとめ
引数と戻り値を使うと、メソッドをさらに柔軟な部品として使えるようになります。
- 引数は、メソッドへ渡す値
- 戻り値は、メソッドから返される値
- 引数はメソッド名の後ろの丸かっこに書く
- 戻り値の型はメソッド名の前に書く
returnを使って値を返すvoidは値を返さない- 引数と戻り値は同じメソッドで組み合わせられる
public bool IsPassed(int passingScore)
{
return Score >= passingScore;
}
このコードを見て、「合格点を受け取り、合格しているかどうかを返すメソッド」と読めれば、引数と戻り値の基本は理解できています。









ディスカッション
コメント一覧
まだ、コメントがありません