1. メソッドとは

C#において、メソッドは一連の処理をまとめて名前をつけたものです。メソッドには以下の要素が含まれます。

  • アウトプット(戻り値): メソッドが処理した結果を返すデータ型。
  • メソッド名: メソッドを呼び出すための識別子。
  • インプット(引数): メソッドに渡されるデータ。
  • 処理内容: メソッドが実行する一連の処理。

メソッドの基本構造

void メソッド名(引数)
{
// 命令文
}


  • void: 戻り値なし。
  • メソッド名: 一連の処理に名前をつけたもの。
  • 引数: メソッドに渡すデータ。
using System;

class Program {
    // メソッドの定義
    static void Add(int a, int b) {
        int sum = a + b;
        Console.WriteLine("結果: " + sum);
    }

    static void Main() {
        Add(3, 5);
    }
}

このプログラムでは、Addメソッドが2つの整数を受け取り、その合計をコンソールに表示しています。


引数のあるメソッド

using System;

namespace Chap08
{
    class Program
    {
        static void CountTo(int num)
        {
            for (int i = 1; i <= num; i++)
            {
                Console.Write(i + " ");
            }
        }

        static void Main(string[] args)
        {
            CountTo(5);
            Console.WriteLine();
            CountTo(10);
        }
    }
}

  • 引数付きのメソッドで任意の数までカウントできます。

戻り値のあるメソッド

using System;

namespace Chap08
{
    class Program
    {
        static double GetAreaOfSquare(double length)
        {
            return length * length;
        }

        static void Main(string[] args)
        {
            double area = GetAreaOfSquare(3.8);
            Console.WriteLine(area);
        }
    }
}

  • メソッドの戻り値を使って、計算結果を取得。

再帰処理

using System;

namespace Chap08
{
    class Program
    {
        static int Factorial(int n)
        {
            if (n <= 1)
                return 1;
            return n * Factorial(n - 1);
        }

        static void Main(string[] args)
        {
            Console.WriteLine(Factorial(3));
        }
    }
}

  • 再帰を用いた階乗の計算。

メソッドチェーン

using System;

namespace Chap08
{
    class Program
    {
        static void Main(string[] args)
        {
            string result = "hello".ToUpper().Substring(0, 4);
            Console.WriteLine(result);
        }
    }
}

  • メソッドチェーンで一連の処理を記述。

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

オーバーロードとは、同じ名前のメソッドを異なる引数の型・数・並び順で定義することを指します。

オーバーロードの例

using System;

class Program {
    // 整数を加算するメソッド
    static int Add(int a, int b) {
        return a + b;
    }
    
    // 小数を加算するメソッド
    static double Add(double a, double b) {
        return a + b;
    }
    
    static void Main() {
        Console.WriteLine(Add(3, 5));      // 8
        Console.WriteLine(Add(2.5, 4.5));  // 7.0
    }
}

このように、異なる引数の型や数で同じ名前のメソッドを定義することで、柔軟なコード設計が可能になります。

3. メソッドの活用

メソッドを使用することで、定形処理を再利用でき、コードの可読性と保守性が向上します。

  • 同じ処理を複数回記述する必要がなくなる
  • 処理のまとまりが明確になり、コードの意図が伝わりやすくなる
  • バグの修正が容易になる

例えば、異なる計算を行うメソッドを定義することで、再利用性を高めることができます。

using System;

class Calculator {
    // 乗算メソッド
    static int Multiply(int a, int b) {
        return a * b;
    }
    
    // 除算メソッド
    static double Divide(double a, double b) {
        if (b == 0) {
            throw new ArgumentException("ゼロで割ることはできません。");
        }
        return a / b;
    }
    
    static void Main() {
        Console.WriteLine(Multiply(4, 5));  // 20
        Console.WriteLine(Divide(10, 2));   // 5.0
    }
}

4. staticメンバの役割

C#では、staticメンバはクラスがロードされた際に一度だけメモリにコピーされ、全てのインスタンス間で共有される特性を持ちます。

staticメンバの例

using System;

class Counter {
    static int count = 0; // staticメンバ
    
    public static void Increment() {
        count++;
    }
    
    public static void ShowCount() {
        Console.WriteLine("現在のカウント: " + count);
    }
}

class Program {
    static void Main() {
        Counter.Increment();
        Counter.ShowCount(); // 現在のカウント: 1

        Counter.Increment();
        Counter.ShowCount(); // 現在のカウント: 2
    }
}

staticメンバのポイント

  • インスタンスを作成せずにクラス名から直接アクセスできる
  • クラスのロード時に一度だけメモリに格納される
  • すべてのインスタンス間で値が共有される






<まとめ:隣の人に正しく説明できたらチェックを付けましょう>

□ 一連の処理に名前をつけたものをメソッドといい、アウトプット(戻り値)、メソッド名、インプット(引数)、処理内容からなる

□ メソッド名が同じで、引数の型や数、並び順が違うメソッドを複数定義することをオーバーロードという

□ メソッドを使うことで定形処理の再利用ができ、メッセージ性を高めることができる

□ staticメンバは実行時にクラスがロードされた時、一度だけメモリー上にコピーされ、メモリ上で唯一無二の存在になる

これらの基礎をしっかり押さえておくことで、C#プログラミングの理解が深まります。

まとめができたら、アウトプットとして演習問題にチャレンジしましょう。

最後までお読みいただきありがとうございます。