【C#】メソッドの定義と呼び出し方|引数・戻り値の扱い

C# では処理をひとまとまりにして再利用できるようにするために「メソッド」を使います。メソッドは入力(引数)を受け取り、必要に応じて結果(戻り値)を返します。本記事ではメソッドの基本的な定義方法と呼び出し方、引数と戻り値の扱い方を解説します。

メソッドの基本構文

メソッドは 戻り値の型 メソッド名(引数リスト) の形で定義します。戻り値が不要な場合は void を指定します。

class Program
{
    // 戻り値なし、引数なし
    static void SayHello()
    {
        Console.WriteLine("Hello, world!");
    }

    static void Main()
    {
        // メソッド呼び出し
        SayHello();
    }
}

引数を受け取るメソッド

引数を使うと、呼び出し元から値を渡して処理に利用できます。引数の型と順番は呼び出し時に一致させる必要があります。

class Program
{
    static void Greet(string name)
    {
        Console.WriteLine($"こんにちは、{name} さん!");
    }

    static void Main()
    {
        Greet("Taro");
        Greet("Hanako");
    }
}

戻り値を持つメソッド

計算結果や処理結果を返したい場合は戻り値を持つメソッドを定義します。戻り値の型を明記し、return 文で値を返します。

class Program
{
    static int Add(int x, int y)
    {
        return x + y;
    }

    static void Main()
    {
        int result = Add(3, 5);
        Console.WriteLine(result); // 8
    }
}

複数の引数を持つメソッド

引数はカンマ区切りで複数定義できます。呼び出し時も同じ数・型の値を渡す必要があります。

class Program
{
    static double CalculateAverage(int a, int b, int c)
    {
        return (a + b + c) / 3.0;
    }

    static void Main()
    {
        double avg = CalculateAverage(70, 80, 90);
        Console.WriteLine(avg); // 80
    }
}

引数にデフォルト値を設定する

C# では引数にデフォルト値を指定できます。省略された場合はデフォルト値が使われます。

class Program
{
    static void ShowMessage(string message = "デフォルトメッセージ")
    {
        Console.WriteLine(message);
    }

    static void Main()
    {
        ShowMessage();                  // デフォルトメッセージ
        ShowMessage("Hello C# world");  // Hello C# world
    }
}

値渡しと参照渡し

通常、引数は値渡しです。参照渡しをしたい場合は refout 修飾子を利用します。

class Program
{
    static void Increment(ref int number)
    {
        number++;
    }

    static void Main()
    {
        int x = 5;
        Increment(ref x);
        Console.WriteLine(x); // 6
    }
}

out は必ずメソッド内で値を代入する必要がある点が ref と異なります。

まとめ

メソッドは処理の再利用性を高め、プログラムを整理するために欠かせない要素です。

  • 戻り値がない場合は void
  • 引数を使って外部から値を渡せる
  • return で結果を返す
  • デフォルト引数や ref/out で柔軟に値を扱える

これらを理解しておくと、C# の基本的なプログラムを効率よく組み立てられるようになります。