PR

【C#】メソッドと関数の基礎: メソッドの定義と呼び出し方

【C#】
広告

はじめに

メソッドと関数は、プログラムの中で特定のタスクを実行するためのコードの塊です。C#では、メソッドと関数は、コードの再利用性を高め、プログラムを整理し、理解しやすくするために使用されます。本記事では、C#におけるメソッドの定義と呼び出し方について、基本から応用までを詳しく解説します。

メソッドの定義

メソッドとは?

メソッドは、特定のタスクを実行するためのコードの塊であり、クラスの一部として定義されます。メソッドは、プログラムの中で何度も再利用できるように設計されています。

基本的なメソッドの定義

メソッドの基本的な構文は以下の通りです。

public class Program
{
    public void MyMethod()
    {
        // メソッドの本体
        Console.WriteLine("Hello, World!");
    }
}

この例では、MyMethodという名前のメソッドが定義されています。このメソッドは、”Hello, World!”というメッセージをコンソールに出力します。

戻り値のあるメソッド

メソッドは、値を呼び出し元に返すことができます。戻り値の型をメソッドの定義に指定します。

public class Program
{
    public int Add(int a, int b)
    {
        return a + b;
    }
}

この例では、Addという名前のメソッドが定義されています。このメソッドは、二つの整数を受け取り、その合計を返します。

パラメータ付きメソッド

メソッドは、パラメータを受け取ることができます。パラメータは、メソッドに渡される入力データです。

public class Program
{
    public void PrintMessage(string message)
    {
        Console.WriteLine(message);
    }
}

この例では、PrintMessageという名前のメソッドが定義されています。このメソッドは、文字列のパラメータを受け取り、それをコンソールに出力します。

オーバーロード

同じ名前のメソッドを異なるパラメータで定義することをオーバーロードと呼びます。C#では、メソッドのオーバーロードをサポートしています。

public class Program
{
    public void PrintMessage(string message)
    {
        Console.WriteLine(message);
    }

    public void PrintMessage(string message, int count)
    {
        for (int i = 0; i < count; i++)
        {
            Console.WriteLine(message);
        }
    }
}

この例では、PrintMessageメソッドが二つ定義されています。一つは一つの文字列パラメータを受け取り、もう一つは文字列パラメータと整数パラメータを受け取ります。

メソッドの呼び出し

インスタンスメソッドの呼び出し

インスタンスメソッドは、クラスのインスタンスを使用して呼び出されます。

public class Program
{
    public void PrintMessage(string message)
    {
        Console.WriteLine(message);
    }

    public static void Main()
    {
        Program program = new Program();
        program.PrintMessage("Hello, World!");
    }
}

この例では、Programクラスのインスタンスが作成され、そのインスタンスを使用してPrintMessageメソッドが呼び出されています。

静的メソッドの呼び出し

静的メソッドは、クラス名を使用して呼び出されます。静的メソッドは、クラスのインスタンスを必要としません。

public class Program
{
    public static void PrintMessage(string message)
    {
        Console.WriteLine(message);
    }

    public static void Main()
    {
        Program.PrintMessage("Hello, World!");
    }
}

この例では、PrintMessageメソッドが静的メソッドとして定義されており、Programクラス名を使用して呼び出されています。

メソッドの戻り値の利用

メソッドの戻り値は、他のメソッドや変数に使用することができます。

public class Program
{
    public static int Add(int a, int b)
    {
        return a + b;
    }

    public static void Main()
    {
        int sum = Add(5, 3);
        Console.WriteLine("Sum: " + sum);
    }
}

この例では、Addメソッドが呼び出され、その戻り値がsum変数に格納されます。

メソッドの高度な使用

再帰メソッド

再帰メソッドは、自分自身を呼び出すメソッドです。再帰メソッドは、複雑な問題を簡潔に解決するために使用されます。

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

    public static void Main()
    {
        int result = Factorial(5);
        Console.WriteLine("Factorial: " + result); // 出力: Factorial: 120
    }
}

この例では、Factorialメソッドが定義されており、そのメソッドは再帰的に自分自身を呼び出して階乗を計算します。

可変長引数

可変長引数を使用すると、メソッドは任意の数の引数を受け取ることができます。C#では、paramsキーワードを使用して可変長引数を定義します。

public class Program
{
    public static void PrintNumbers(params int[] numbers)
    {
        foreach (int number in numbers)
        {
            Console.WriteLine(number);
        }
    }

    public static void Main()
    {
        PrintNumbers(1, 2, 3, 4, 5); // 出力: 1 2 3 4 5
    }
}

この例では、PrintNumbersメソッドが可変長引数を受け取り、その引数を順番に表示します。

ジェネリックメソッド

ジェネリックメソッドは、異なるデータ型を受け取ることができるメソッドです。ジェネリックメソッドは、型に依存しないコードを記述するために使用されます。

public class Program
{
    public static void Swap<T>(ref T a, ref T b)
    {
        T temp = a;
        a = b;
        b = temp;
    }

    public static void Main()
    {
        int x = 5;
        int y = 10;
        Swap(ref x, ref y);
        Console.WriteLine($"x: {x}, y: {y}"); // 出力: x: 10, y: 5

        string str1 = "Hello";
        string str2 = "World";
        Swap(ref str1, ref str2);
        Console.WriteLine($"str1: {str1}, str2: {str2}"); // 出力: str1: World, str2: Hello
    }
}

この例では、Swapメソッドがジェネリックメソッドとして定義されており、異なるデータ型の変数を交換します。

メソッドとスコープ

ローカル変数のスコープ

メソッド内で宣言された変数は、ローカル変数と呼ばれます。ローカル変数は、そのメソッド内でのみ有効です。

public class Program
{
    public static void MyMethod()
    {
        int localVar = 10;
        Console.WriteLine("Local variable: " + localVar);
    }

    public static void Main()
    {
        MyMethod(); // 出力: Local variable: 10
        // Console.WriteLine(localVar); // コンパイルエラー: localVarはスコープ外
    }
}

この例では、localVarMyMethod内でのみ有効です。

パラメータのスコープ

メソッドのパラメータは、そのメソッド内でのみ有効です。

public class Program
{
    public static void PrintMessage(string message)
    {
        Console.WriteLine(message);
    }

    public static void Main()
    {
        PrintMessage("Hello, World!"); // 出力: Hello, World!
        // Console.WriteLine(message); // コンパイルエラー: messageはスコープ外
    }
}

この例では、messagePrintMessageメソッド内でのみ有効です。

まとめ

メソッドと関数は、C#プログラムの基本的な構成要素です。メソッドを使用することで、コードを整理し、再利用性を高めることができます。この記事では、メソッドの定義と呼び出し方、パラメータと戻り値、オーバーロード、再帰メソッド、可変長引数、ジェネリックメソッド、そしてスコープについて学びました。これらの基本を理解し、実際のプログラムに適用することで、より効率的で読みやすいコードを書くことができるようになります。

広告
【C#】
広告
タイトルとURLをコピーしました