【C#】メソッドの作り方とは?【戻り値returnとvoidの実装】

C#,プログラミング言語

C# メソッドの使い方解説。

この記事ではC#におけるメソッドの作成方法return(戻り値あり)void(戻り値なし)の違いについて解説します。

しっかり理解して、メソッドを自由自在に作成できるようになりましょう。

本記事をご覧頂くと下記内容が理解できます。

この記事で学べること
C#のメソッドの作成方法

return(戻り値あり)とvoid(戻り値なし)の違い
メソッドの作成例

筆者

疑問点や質問には何でも答えようと思っています。
この記事の不明点はこちらからお問い合わせ下さい

C#のおすすめ講座を受講して、最短1週間でC#をマスターしよう!
⇒C#が学べるおすすめプログラミングスクール&オンライン講座11選

C# メソッドとは?概念と作成方法を解説

この項ではメソッドの使い方と概念についてお話しします。

C# メソッドとは?

メソッドとは特定の工程を実行する処理を1つにまとめ、部品化したものです。

例えば、お風呂を沸かす処理があったとします。

「お風呂を沸かす」処理工程
・給湯器の電源を点ける。
・蛇口をひねる。
・10分待つ。
・お湯の水位を確認する。
・蛇口を締める。

「お風呂を沸かす」という処理を一つ一つ細かく見ていくと、数多くの処理によって構成されていることが分かります。

これをプログラムで実行すると下記のようになります。

メソッドがない場合のプログラムの処理

上記のように「お風呂を沸かす」という処理をプログラムで実装すると、とても冗長で分かりにくくなります。

お風呂を沸かす処理を10回プログラムで実装したい。
これを実装しようとすると、10倍のコード量が必要でとても大変です。

このように処理が多く冗長になるのを防ぐために用いられるのがメソッド化です。

メソッドがないプログラムは、一回一回処理を記述するためコードが冗長になりがち。

処理をメソッド化しない時のデメリット
・意味のまとまりが把握しづらい。
・コードが冗長になり、可読性が落ちる。
・チーム開発の時に同じ処理を使いまわせない。
・エラーの原因になりやすい。

など数多くのデメリットが挙げられます。

しかしメソッド化してあげると図のように、まとめて処理を行い結果だけ返してくれます

メソッドの場合、処理をまとめて実行するから、分かりやすく管理しやすい

上記イメージのように、処理をまとめることで意味を明確化したり、コードの量を削減したりできます。

メソッドとはこのように「特定の工程を実行する処理を1つにまとめ、部品化したもの」です。

C# メソッド無しのプログラムは冗長

実際にメソッド無しのプログラムとメソッドありのプログラムを見て比較しましょう。

「10mlお湯を入れ、水量を確認。100ml溜まったらお湯を止め「お風呂が沸きました」と表示する。」
という処理を例に見てみましょう。

int waterAmount = 0; //お湯の水量を格納する変数
waterAmount += 10;//お湯を10ml加える
if (waterAmount > 100)
{
    Console.WriteLine("お風呂が溜まりました。");
}

waterAmount += 10;//お湯を10ml加える
if (waterAmount > 100)
{
    Console.WriteLine("お風呂が溜まりました。");
}

waterAmount += 10;//お湯を10ml加える
if (waterAmount > 100)
{
    Console.WriteLine("お風呂が溜まりました。");
}

waterAmount += 10;//お湯を10ml加える
if (waterAmount > 100)
{
    Console.WriteLine("お風呂が溜まりました。");
}

waterAmount += 10;//お湯を10ml加える
if (waterAmount > 100)
{
    Console.WriteLine("お風呂が溜まりました。");
}

waterAmount += 10;//お湯を10ml加える
if (waterAmount > 100)
{
    Console.WriteLine("お風呂が溜まりました。");
}

waterAmount += 10;//お湯を10ml加える
if (waterAmount > 100)
{
    Console.WriteLine("お風呂が溜まりました。");
}

waterAmount += 10;//お湯を10ml加える
if (waterAmount > 100)
{
    Console.WriteLine("お風呂が溜まりました。");
}

waterAmount += 10;//お湯を10ml加える
if (waterAmount > 100)
{
    Console.WriteLine("お風呂が溜まりました。");
}

waterAmount += 10;//お湯を10ml加える
if (waterAmount > 100)
{
    Console.WriteLine("お風呂が溜まりました。");
}

//処理が終了する。
waterAmount += 10;//お湯を10ml加える
if (waterAmount > 100)
{
    Console.WriteLine("お風呂が溜まりました。");
}

メソッド化しないと、とても冗長なプログラムになってしまいます。

一方処理を一部メソッド化したプログラムは下記の通り。

int waterAmount = 0; //お湯の水量を格納する変数
waterAmount = AddWater(waterAmount);
waterAmount = AddWater(waterAmount);
waterAmount = AddWater(waterAmount);
waterAmount = AddWater(waterAmount);
waterAmount = AddWater(waterAmount);
waterAmount = AddWater(waterAmount);
waterAmount = AddWater(waterAmount);
waterAmount = AddWater(waterAmount);
waterAmount = AddWater(waterAmount);
waterAmount = AddWater(waterAmount);
waterAmount = AddWater(waterAmount);

//メソッド
public static int AddWater(int waterAmount)
{
    waterAmount += 10;
    if (waterAmount > 100)
    {
        Console.WriteLine("お風呂が溜まりました。");
    }
    return waterAmount;
}

上2つのコードは同じ処理を行っています。

特定の工程をメソッド化することで、プログラムが節約できたことが分かるでしょう。
これがメソッド化の効力になります。

C# メソッドのメリット

メソッドのメリットは以下の通りです。

メソッドのメリット
・コードが冗長になるのを防ぐことができる。
・コーディングミスが減る。
・実装するコード量が減り生産性が高くなる。

・修正箇所が減る。
・集団開発の際にチームメンバーが共通化したメソッドを使いまわせる

C# 戻り値の概念(voidとreturn)とメソッドの作成方法

この項ではメソッドの戻り値についてお話しします。

メソッドを作成するに当たり、重要な概念が戻り値です。

戻り値とは「プログラム中で呼び出されたメソッドが処理を終了する際に、呼び出し元に対して渡す値。」です。要するにメソッドの処理が終了した時に返ってくる値です。

上記が戻り値有りと戻り値なしのメソッドのイメージです。

メソッドはこのように「戻り値」が返る場合と返らない場合が存在します。
下記のプログラムで具体的に見ていきましょう。

戻り値無し(void)のメソッド

public static void SubtractionNum(int x, int y)
{
    //戻り値無しのメソッドはメソッド名の前に「void」を記載する
    int addNum = x - y;
    Console.WriteLine("戻り値無しのメソッド、計算結果は" + addNum);
}

戻り値無しのメソッドはpublicの後に「void」を記載します。
「void」を記載することで、値を返却しないメソッドを定義することができます。

戻り値あり(return)のメソッド

public static int AdditionalNum(int x,int y)
{
    int addNum = x + y;
    //戻り値ありのメソッド処理の最後に「return」を記載する
    return addNum;
}

publicの後に「void」を記載しない場合は、戻り値ありのメソッドとなります。
「void」の代わりにデータ型を定義します。今回はint型を定義。

戻り値ありの場合は、メソッドの終了時に「return」を記載しないとエラーが発生します。注意しましょう。

C# メソッドを用いたプログラムの実装

実際にプログラムを動作させ、メソッドの処理と戻り値について確認してみましょう。
皆さんもプログラムをコピペして実行させてみてください。
プロジェクトの作成方法はこちら(左記サイトの①プロジェクトの作成をご確認ください)

C# メソッドの実装

Visual Studio画面

プログラムのコピペは下記から

using System;

namespace LecturerBeginner
{
    class Program
    {
        static void Main(string[] args)
        {
            //戻り値ありの場合は値が返ってくるため、変数にその返却値を格納する。
            int num = AdditionalNum(5,4);
            Console.WriteLine("戻り値ありのメソッド、計算結果は" + num);

            //戻り値無しの場合は値が返ってこないため、呼び出すだけ。
            SubtractionNum(5,4);
        }
        public static int AdditionalNum(int x,int y)
        {
            int addNum = x + y;
            return addNum;
        }
        public static void SubtractionNum(int x, int y)
        {
            int addNum = x - y;
            Console.WriteLine("戻り値無しのメソッド、計算結果は" + addNum);
        }
    }
}

上記のプログラムを実行すると下記の結果が得られます。

プログラムを実行する際はビルドをした後に「デバック」⇒「デバックなしで開始」を選択。

メソッドを用いたプログラムの実行結果

プログラムの実行方法はこちら(左記サイトの③プロジェクトの実行をご確認ください)

C# メソッドを用いたプログラムの解説

前項「C# メソッドを用いたプログラムの実装」で紹介したプログラムの解説をします。

1. C# 戻り値ありのメソッドの解説

数値を2つ渡すと、「足し算をしてその結果を返却する」メソッドを実装します。

static void Main(string[] args)
{
    //戻り値ありの場合は値が返ってくるため、変数にその返却値を格納する。
    int num = AdditionalNum(5,4); //①、⑤
    Console.WriteLine("戻り値ありのメソッド、計算結果は" + num);
}

//戻り値ありのメソッド
public static int AdditionalNum(int x,int y) //②
{
    int addNum = x + y;//③
    return addNum; //④
}

処理の流れ
①メイン処理(void Main)で数値の5と4を「AdditionalNumメソッド」に渡します。(int num = AdditionalNum(5,4);)
②AdditionalNumメソッドが、引数xに5、yに4を代入し値を受け取る。
③メソッドの処理が始まる。(int addNum = x + y;)
④足し算した結果を返却する。(return addNum;)
⑤返却値addNumを受け取り、「int num」に代入する。(int num = AdditionalNum(5,4);)

メイン処理でメソッドを呼び出し、メソッド内の処理が実行され、値がメイン処理に返る。
という流れです。

メソッド単体で処理が動作することはありません。
メイン処理でメソッドを呼び出す必要があります。(今回の場合「AdditionalNum(5,4)」)
ご注意ください。

2. C# 戻り値無しのメソッドの解説

数値を2つ渡すと、「足し算をしてその結果を表示する」メソッドを実装します。

static void Main(string[] args)
{
    //戻り値無しの場合は値が返ってこないため、呼び出すだけ。
    SubtractionNum(5,4); //①
}

public static void SubtractionNum(int x, int y) //②
{
    int addNum = x - y; //③
    Console.WriteLine("戻り値無しのメソッド、計算結果は" + addNum); //④
}

処理の流れ
①メイン処理で数値の5と4を「SubtractionNumメソッド」に渡します。(SubtractionNum(5,4);)
②AdditionalNumメソッドが、引数xに5、yに4を代入し値を受け取る。
③メソッドの処理が始まり、「int addNum = x – y;」を実行する。
④結果を画面に表示する。

戻り値無しのメソッドの場合は、戻り値がないためメソッドは呼びだすだけでOKです。
戻り値ありの場合は戻り値と同じデータ型の変数を用意する必要があります。

C#メソッドの使い方まとめ

以上がC#におけるメソッドの使い方でした。

まとめると

メソッドとは
・プログラムの短縮化ができる。

・戻り値ありのメソッドと戻り値無しのメソッドが存在する。

・コーディングミスを減らすことができる。
・チーム開発する際に使いまわすことができる。


プログラミングに於いて超重要な概念になるのでしっかり理解しましょう。

以上です。お疲れさまでした。

筆者

C#プログラミング始めやすいように下記にC#を学ぶための完全ガイドを作成しています。
気軽にC#の勉強を始めてみてください!!

C#プログラミングを学んでみたい方向けの完全ガイドを下記に掲載します。
⇒C#初心者向けプログラミング完全ガイド


お時間ある方はカリキュラムを学んでみましょう。

プログラミングで挫折しかけている方へ

おすすめのC#教材(補助教材として)

C#,プログラミング言語

Posted by 9noike