ブルーノのC#プログラミング & unity勉強日記

プログラミング素人、ブルーノの自主勉強ノートです。他のプログラミングを勉強したい方の助けになれば幸いです。その他趣味の雑記もしていきたいです

メソッドのオーバーロードについて

みなさんこんにちは🌚

台風に見舞われて明日試合だというのにちっともテニスの練習ができないブルーノです。こんな日はプログラミングの勉強に限りますね。さて今回はメソッドのオーバロードについて勉強していきます。なんか突然かっこいいワードが出てきましたね。楽しみです

 

メソッドのオーバーロード

メソッドは基本的に同じクラスに一つしか持つことはできませんが、実はパラメータリスト(引数)が異なれば、同じ名前のメソッドを持つことができます。これをメソッドのオーバーロードと言います。では具体的にどういうことか、実際にプログラムを組んでみます

f:id:covory10101101276:20170917100557p:plain

結果は下のようになります。

f:id:covory10101101276:20170917100603p:plain

5, 10, 15, 20行めにあるように、4つとも同じ名前ですが、引数が違いますね。このメソッドの名前+引数の組み合わせのことをシグニチャ(signature)と言います。オーバロードは、メソッドの中身がほぼ同じで、引数の型が違うプログラムなどを作る際に用いられるようです。

params キーワード

では、この入力される引数の数が変動する場合はどうでしょうか。例えばユーザーが入力した分だけ引数を設けたいときなどです。3個くらいと決まっていれば、1〜3の引数を持つメソッドのオーバーロードですみますが、引数の数が確定されていない場合はいくら設けてもキリがありませんよね。そんな時は、paramsキーワードが使えます。

戻り値 メソッド名(params 型[] 引数名)

とすることで呼び出し側の用意した引数がその数だけ配列に格納されます。メソッド内でこの配列を調べることでその内容を取り出せます。ただしこの場合、引数は全て同じ型でなければなりません。では、その例を下に載せます

f:id:covory10101101276:20170917104826p:plain

f:id:covory10101101276:20170917104831p:plain

どれだけお寿司を頼んでもちゃんと全て作って出してくれましたね。私もこれくらい正確に素早く全てのお客さんのオーダーを捌けるようになりたいです。

 

今回はここまでにしておきたいと思います。paramsの引数をユーザーの入力分だけ増やすにはforループとConsole.ReadLineを使えばいいのかな?うーん。

少しずつ理解はしてきたような気もしますがまだ自分で自由に組むことは難しいようです。自分で使えなければ理解したことにはなりませんよね。もしアドバイスをいただけるならどなたでもどうかお力添えを賜りたいです。

明日はテニスの試合だし、学校も始まったら勉強しなきゃ行けないし、時間がいくらあっても足りない😂😭