C#を勉強していると、「クラス」「メソッド」「インスタンス」など色んな用語が出てきます。
今回は、コーディングの基本になる、「メソッド」について事例も含めて紹介します。
☆C#について、他にも記事を書いていますのでこちらも参考にしてください☆
【C#入門】クラスとは?役割とVisual Studioでの作り方を紹介
【C#入門】インスタンスとコンストラクタとは?
【C#入門】カプセル化とは?アクセス修飾子の種類と使い方を紹介
【C#入門】プロパティとは?SetとGetを使った書き方をご紹介
メソッドとは
メソッドとは、処理のまとまりごとに部品化して必要な時に使う仕組みのことです。
例えば、スーパーで買い物をするときを考えてみましょう。
全ての手順が箇条書きで書いてあると読みずらいですが、「商品を選ぶ工程」、「お会計をする工程」と区切ることで、全体の流れをつかみやすくなります。これが、メソッドの仕組みです。
また、スーパーで別のものを買いにいく場合でも、「スーパーに行く工程」と「お会計をする工程」は共通しているため、同じ工程を必要なときに参照することができます。
以上を踏まえて、メソッドの役割は大きく二つあります。
2.何度も出てくる処理をメソッドにすることで、プログラムを短くする
実際にプログラムを書くときのメソッドの構成としては、部品化した処理をかく「メソッド本体」と「作ったメソッドを呼び出す部分」の二つの構成になっています。
そして、メソッドを呼び出すときに、メソッドに値を渡すこと(引数)やメソッドで処理した結果を呼び出し元に渡す、戻り値を持たせることもできます。
よく使うのは、下記3つのパターンなので、それぞれ紹介させていただきます。
2.引数があるメソッド
3.引数と戻り値があるメソッド
引数と戻り値のないメソッド
今回はshopという名前のメソッドを作成し、その中で「いらっしゃいませ。かごをお取りください。」と表示する処理を作成します。
■プログラム■
■結果■
■説明■
引数なし戻り値なしの場合のメソッド本体の書き方はvoid Shop() {処理} とします。
void は戻り値なし
Shop はメソッド名
() は引数がなし
という意味です。
*staticがついているものはstaticメソッドと呼び、staticメソッドからしか呼び出せないですが、Mainメソッドはstaticがついているので呼び出すことができます。
では、引数があるメソッドはどのように書いたらよいでしょうか?
引数があるメソッド
先ほどのプログラムの中に、商品名を渡すと、その商品の金額をコンソールに表示する(受け取った引数を表示する)メソッドを作成します。
■プログラム■
■結果■
■説明■
引数あり戻り値なしの場合のメソッド本体の書き方は
void SelectItem(string ItemName) とします。
void は戻り値なし
SelectItem はメソッド名
(string ItemName) は引数の型と引数の変数名
という意味です。
引数の型が数値の場合はintとします。また、引数が複数ある場合は,で区切って書きます。
例)先ほどのメソッドに数値の2という引数を追加してみました
*呼び出し元
SelectItem("じゃがいも",2);
*メソッド本体
static void SelectItem(string ItemName,int QTY)
引数と戻り値があるメソッド
先ほどのプログラムの中に、メソッドに商品名と個数を渡すと、その商品の金額を計算し、戻り値を渡して残金を表示するロジックを追加します。
■プログラム■
全体としては、Mainメソッド(赤枠)からShopメソッド(オレンジ枠)とSelectItem(青枠)を呼び出しています。
MainメソッドからSelectItemメソッドに「"じゃがいも".2」を引数として渡します。
また、SelectItemメソッドはPriceを戻り値としてMainメソッドに返します。
■結果■
■説明■
引数あり戻り値ありの場合のメソッド本体の書き方は
int SelectItem(string ItemName) とします。
int は戻り値の型
SelectItem はメソッド名
(string ItemName) は引数の型と引数の変数名
という意味です。
また、戻り値はReturn に続けて呼び出し元に渡す値を書く必要があります。
今回の例だと、"return Price;" ですね。
サンプルプログラムでは戻されたPriceをMoneyから差し引いて、残金を表示するようにしています。(長くなるので、詳細の説明は省きます、、><)
ひとこと
メソッドの役割と、利用する際の3つのパターンについて紹介させていただきました。
2.引数があるメソッド : void メソッド名( 変数の型 変数名) {処理}
3.引数と戻り値があるメソッド: 戻り値の型 メソッド名( 変数の型 変数名) {処理}
C#を学び始めた頃は、「voidって何?(;・∀・)」、「なんで()に入るケースと入らないケースがあるの?(;・∀・)」などチンプンカンプンでしたが、ケースごとに理解することで知識を定着することができました。
今回の説明は「確かな力が身につくC# 「超」入門」を参考にさせていただきましたが(例題はオリジナルです)、「もっと前から読んでおきたかった!」と痛感しています、、。もし、C#について学び始めたという方は是非参考にしてみてください!(2020年7月に出版された新書です^^)