工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

C#のメソッド:定義、呼び出し、パラメータ渡し、再帰を完全解説

メソッドとは、タスクを実行するために一緒に働くステートメントのグループです。すべてのC#プログラムには、Mainという名前のメソッドを持つクラスが少なくとも1つあります。

メソッドを使用するには、以下の2ステップが必要です。

メソッドの定義

メソッドを定義するとき、その構造の要素を宣言します。C#でのメソッド定義の構文は以下の通りです。

<Access Specifier> <Return Type> <Method Name>(Parameter List) {
    Method Body
}

メソッドの構成要素

メソッド定義の例

class NumberManipulator {
    public int FindMax(int num1, int num2) {
        int result;
        if (num1 > num2)
            result = num1;
        else
            result = num2;
        return result;
    }
}

メソッドの呼び出し

メソッド名はメソッドの呼び出しに使用します。

同一クラス内からの呼び出し

using System;
namespace CalculatorApplication {
    class NumberManipulator {
        public int FindMax(int num1, int num2) {
            int result;
            if (num1 > num2) result = num1;
            else result = num2;
            return result;
        }
        
        static void Main(string[] args) {
            int a = 100;
            int b = 200;
            int ret;
            NumberManipulator n = new NumberManipulator();
            // FindMaxメソッドの呼び出し
            ret = n.FindMax(a, b);
            Console.WriteLine("Max value is : {0}", ret);
            Console.ReadLine();
        }
    }
}

実行結果:

Max value is : 200

別クラスからの呼び出し

using System;
namespace CalculatorApplication {
    class NumberManipulator {
        public int FindMax(int num1, int num2) {
            int result;
            if (num1 > num2) result = num1;
            else result = num2;
            return result;
        }
    }
    
    class Test {
        static void Main(string[] args) {
            int a = 100, b = 200, ret;
            NumberManipulator n = new NumberManipulator();
            ret = n.FindMax(a, b);
            Console.WriteLine("Max value is : {0}", ret);
            Console.ReadLine();
        }
    }
}

再帰メソッド呼び出し

メソッドが自分自身を呼び出すことを再帰と呼びます。以下は再帰関数を使用して階乗を計算する例です。

using System;
namespace CalculatorApplication {
    class NumberManipulator {
        public int Factorial(int num) {
            if (num == 1) {
                return 1;
            } else {
                return Factorial(num - 1) * num;
            }
        }
        
        static void Main(string[] args) {
            NumberManipulator n = new NumberManipulator();
            Console.WriteLine("Factorial of 6 is : {0}", n.Factorial(6));
            Console.WriteLine("Factorial of 7 is : {0}", n.Factorial(7));
            Console.WriteLine("Factorial of 8 is : {0}", n.Factorial(8));
            Console.ReadLine();
        }
    }
}

実行結果:

Factorial of 6 is: 720
Factorial of 7 is: 5040
Factorial of 8 is: 40320

パラメータの渡し方

パラメータ付きメソッドを呼び出すとき、パラメータを渡す必要があります。パラメータの渡し方には3つの方法があります。

No.メカニズムと説明
1値渡し(Value parameters)
実引数の実際の値が仮パラメータにコピーされる。関数内でパラメータを変更しても実引数には影響しない。
2参照渡し(Reference parameters)
実引数のメモリ位置への参照が仮パラメータにコピーされる。パラメータへの変更が実引数に影響する。refキーワードを使用。
3出力パラメータ(Output parameters)
複数の値を返すのに役立つ。outキーワードを使用。メソッド内で必ず値を割り当てる必要がある。

値渡しの例

void ModifyValue(int x) {
    x = 20;  // ローカルコピーのみ変更
}
int a = 10;
ModifyValue(a);
Console.WriteLine(a);  // 10(変更されない)

参照渡し(ref)の例

void ModifyRef(ref int x) {
    x = 20;  // 元の変数が変更される
}
int a = 10;
ModifyRef(ref a);
Console.WriteLine(a);  // 20(変更される)

出力パラメータ(out)の例

bool TryParseInt(string input, out int result) {
    return int.TryParse(input, out result);
}

if (TryParseInt("123", out int number)) {
    Console.WriteLine($"変換成功: {number}");
}

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

同じ名前で異なるパラメータリストを持つ複数のメソッドを定義できます。

public int Add(int a, int b) => a + b;
public double Add(double a, double b) => a + b;
public int Add(int a, int b, int c) => a + b + c;

ベストプラクティス

C言語

  1. C# 抽象クラスと抽象メソッドをマスターする:実践ガイド
  2. C# 部分クラスと部分メソッドを理解する
  3. C# sealed クラスとメソッドをマスターする:使用判断、実例、コードの安全性とパフォーマンス向上
  4. C#メソッドオーバーロード完全ガイド:概念、例、ベストプラクティス
  5. C言語の関数マスター:構造、宣言、ベストプラクティス
  6. C言語ビットフィールド:メモリ効率を最大化するテクニック
  7. C言語可変長引数のマスター:実践ガイド
  8. C# デリゲート完全ガイド:関数参照とイベントの仕組みを理解する
  9. C# 匿名メソッド:デリゲート利用をシンプルにする技法
  10. MATLAB積分マスター:不定積分からリーマン和まで
  11. Java 8デフォルトメソッド解説:インターフェース拡張と後方互換性