前回まで、データのまとまり(配列・List など)をやってきました。

今回からは、こんどは処理をまとめる話です。その第一歩、メソッドです。

メソッドとは、いくつかの処理をひとまとめにして、名前をつけたものです。

なぜ、処理をまとめるのか

プログラムを書いていると、同じような処理を、何度も書くことがあります。

たとえば「あいさつを表示する」処理。

Console.WriteLine("ようこそ");
Console.WriteLine("当店をご利用いただきありがとうございます");
Console.WriteLine("ごゆっくりどうぞ");

このあいさつを、プログラムの3か所で使いたいとします。すると、同じ3行を3回コピーすることに。もし内容を変えたくなったら、3か所すべてを直す必要があります。面倒だし、直し忘れも起きます。

そこで、この処理に名前をつけてまとめます。それがメソッドです。

料理でいうなら、「下ごしらえ」のようなもの。「野菜を洗って、皮をむいて、切る」という一連の作業に「下ごしらえ」と名前をつけておけば、「下ごしらえして」の一言で済みますよね。

書き方を見てみる

さっきのあいさつを、メソッドにまとめます。

void Greet()
{
    Console.WriteLine("ようこそ");
    Console.WriteLine("当店をご利用いただきありがとうございます");
    Console.WriteLine("ごゆっくりどうぞ");
}

これで「Greet(あいさつする)」という名前の処理ができました。形を見てみましょう。

  • void … このメソッドは「結果を返さない」という印(次回くわしく)
  • Greet … メソッドにつけた名前
  • () … カッコ(中身は次回)
  • { } … この中に、まとめたい処理を書く

呼び出して使う

メソッドは、作っただけでは動きません。名前を呼んで(呼び出して)使います。

Greet();   // あいさつが表示される

Greet(); と書くだけで、まとめた3行が実行されます。

3か所で使いたいなら、3回呼べばいい。

Greet();
// ... 別の処理 ...
Greet();
// ... また別の処理 ...
Greet();

Greet() と書くだけ。3行をコピーする必要はありません。そして、あいさつ内容を変えたくなったら、メソッドの中身を1か所直すだけで、呼んでいる全部に反映されます。

メソッドの、もうひとつの利点

メソッドは、「くり返しを減らす」だけが目的ではありません。プログラムを読みやすくするのも、大きな役割です。

たとえば、長いプログラムがあったとして、

Greet();
ShowMenu();
TakeOrder();

中身が分からなくても、「あいさつして、メニューを見せて、注文を取る」という流れが一目で分かります。処理に名前がついていると、プログラムが「読める文章」のようになるんです。

これは、コードが長くなるほど効いてきます。処理のかたまりに、意味のある名前をつける。これは、良いプログラムを書くうえで、とても大事な考え方です。

つまずきポイント

初心者がつまずくのが、作っただけで、呼び出すのを忘れることです。

void Greet()
{
    Console.WriteLine("ようこそ");
}
// Greet() を呼んでいない! → 何も表示されない

メソッドは、「作る」と「呼ぶ」は別です。作っただけでは、中身は実行されません。レシピを書いただけでは料理ができないのと同じで、「下ごしらえして」と実際に呼ばないと動かないのです。

「何も表示されないな?」と思ったら、「呼び出し、書いたかな?」と確認してみてください。

まとめ

メソッドは、処理に名前をつけてまとめたもの。

void Greet()        // 作る
{
    Console.WriteLine("ようこそ");
}

Greet();            // 呼び出す
  • 同じ処理のくり返しを減らせる
  • 名前をつけることで、プログラムが読みやすくなる
  • 「作る」と「呼ぶ」は別。呼び出しを忘れずに

次回は、メソッドに情報を渡したり、結果を受け取ったりする 引数と戻り値 です。メソッドが、ぐっと便利になります。