みなさんお勉強がんばっていますか。el(える)です。
今回はメソッド編となります。
プログラムが長くなると、どこに何を書いているかなど、 全体の流れがつかみづらくなります 。
そのため、 処理のまとまりごとに名前を付けて分割できるメソッド というものがあります。
メソッドのイメージ
例えば、何か作り方を調べた時に、手順が全部箇条書きで書いてあると読みにくいですよね。
各工程で分けて書かれていたほうが分かりやすく、
流れも読みやすいと思います。
また、メソッドを使うことで、 必要なときに参照してくださいという書き方をすることで無駄を省いて短くまとめる ことができます。
よく出てくるメソッドはまとめておき、必要に応じて何度でも呼び出すことができます。
メソッドの役目は大きく2つあります。
処理を分割してそれぞれメソッドにまとめることで、プログラムを読みやすくする。
何度も出てくる処理をメソッドにすることでプログラムを短くする。
Mainの中にあった処理を分割してMainブロックの外に出して名前をつけたものです。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Sample { class Program { static void Hoge() { Console.WriteLine("Hoge"); } static void Main(string[] args) { Hoge(); } } }
メソッドの構成は、メソッド本体と作ったメソッドを呼び出す2つで構成されます。
メソッドに値を渡して(引数)メソッド本体の処理に使ったり、
メソッド本体が処理した結果を呼び出し元で受け取ったり(戻り値)できます。
引数なし・戻り値なし
引数なし・戻り値なしのパターンでプログラムを作ってみましょう
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Sample { class Program { static void Hoge() { Console.WriteLine("Hello World"); } static void Main(string[] args) { Hoge(); } } }
Hoge()がメソッド本体を呼び出してHello Worldと表示させています。
引数なし・戻り値なしメソッドの書式
Void メソッド名()
{
メソッドの処理;
}
詳しく説明すると、
static void(←戻り値なし) Hoge(←メソッド名)()(←引数なし)
先頭のvoidは戻り値なしという意味です。
メソッド名は役割が分かるような名前をつけましょう。
C#では基本的にメソッド名の先頭は大文字です。
引数なしメソッド呼び出しの書式
メソッド名()
static
Mainメソッドの外側で宣言するメソッドや変数にはstaticキーワードをつける必要があります。
引数あり・戻り値なし
引数あり・戻り値なしのプログラムです。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Sample { class Program { static void Hoge(string item) { Console.WriteLine("Hello World"); if(item == "水") { Console.WriteLine("水です"); } else if (item == "石") { Console.WriteLine("石です"); } else { Console.WriteLine("なし"); } } static void Main(string[] args) { Hoge("水"); } } }
引数は メソッドを実行する時に呼び出し元からメソッド本体に渡す値 のことです。
今回は引数に水を設定しています。
引数あり・戻り値なしの書式
void メソッド名(型名 変数名,型名 変数名・・・・)
{
メソッドの処理
}
ちょっと詳しく説明すると、
void Hoge(←メソッド名)(string(←引数の型) item(←引数の変数名))
となります。
引数ありの呼び出し方の書式
メソッド名(引数,引数・・・)
引数あり・戻り値あり
引数あり・戻り値ありのプログラムを書いてみましょう。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Sample { class Program { static string Hoge(string item) { Console.WriteLine("Hello World"); string itemName = ""; if (item == "水") { Console.WriteLine("水です"); itemName = "水だよ"; } else if (item == "石") { Console.WriteLine("石です"); itemName = "石だよ"; } else { Console.WriteLine("なし"); itemName = "なしだよ"; } return itemName; } static void Main(string[] args) { string itemName = Hoge("水"); Console.WriteLine(itemName); } } }
メソッドの処理が終わって呼び出し元に戻るときに値を1つだけ渡すことができ、
この値を戻り値といいます。
今回は水を引数として渡して、戻り値として「水だよ」を受け取りました。
引数あり・戻り値ありの書式
戻り値の型 メソッド名(型名 変数名,型名 変数名・・・)
{
メソッドの処理
}
詳しく見てみると、
static string(←戻り値の型) Hoge(←メソッド名)(string(←(引数の型) item(←引数の変数名))
戻り値はreturnを使います。
戻り値はメソッドの定義に書いた戻り値の型と一致している必要があります。
returnの書式
return 戻り値
return文を実行すると強制的に呼び出し元に戻ります。
メソッドの途中でreturn文を書くとそれ以降の処理は実行されません。
終わりに
今回はメソッド処理について勉強しました。
だんだん難しくなってきましたね。
ゆっくり読んでいくと何をしているか分かるので、
このくらいなら大丈夫。
まだ僕の阿呆の頭でもついていけています。
でも連続で勉強するのはちょっと疲れますね。
薬で日中眠たいので大変です。
しかしこのくらいしないと仕事に戻れないと思うんです。
そんな不安から勉強をしてしまいます。
こんな精神状態は病気によくなさそうです。。。
でもどうしたらいいかわからないのです。
じゃ勉強するしかないじゃない。
ただ、簡単なゲームを作りたいだけなのに、
UnityとC#の勉強をすることになるとは・・・と
ほんのちょっとだけ後悔している今日この頃です。
Unity初心者におすすめの本です。今回は2冊あります。
UnityとC#の勉強をしながら簡単なゲームを作っていく本となっています。
(C#は基礎の基礎なので別途勉強が必要です。)
僕も簡単なゲームを本に書かれている通りに作り、
実機でテストまでしました。
こんな僕でも挫折せずそこまでできる本です。
初心者が初心者におすすめできる本となっております。
それではまた次回。