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

C#メソッドオーバーロード完全ガイド:概念、例、ベストプラクティス

C#メソッドオーバーロードをマスターする

C#におけるメソッドオーバーロードの仕組みを、パラメータの数・型・順序の変更といった観点から、豊富な実例とともに解説します。

C#では、同じクラス内に同じ名前だが異なるパラメータリストを持つメソッドを複数定義できます。これが「メソッドオーバーロード」です。例えば:

void Display() { ... }
void Display(int a) { ... }
float Display(double a) { ... }
float Display(int a, float b) { ... }

ここでは Display() メソッドがオーバーロードされています。これらは同じ名前ながら、受け取る引数が異なります。

注意: オーバーロードの判定はパラメータリストのみで行われます。戻り値の型が違ってもオーバーロードとはみなされません。

1. パラメータの数を変える

パラメータの個数が異なればオーバーロード可能です。

void Display(int a) { ... }
void Display(int a, int b) { ... }

実例:

using System;

namespace MethodOverload {
    class Program {
        // パラメータ1つ
        void Display(int a) {
            Console.WriteLine("Arguments: " + a);
        }

        // パラメータ2つ
        void Display(int a, int b) {
            Console.WriteLine("Arguments: " + a + " and " + b);
        }

        static void Main(string[] args) {
            Program p1 = new Program();
            p1.Display(100);
            p1.Display(100, 200);
            Console.ReadLine();
        }
    }
}

出力

Arguments: 100
Arguments: 100 and 200

渡される引数の数に応じて、適切なオーバーロードが呼び出されます。


2. パラメータのデータ型を変える

パラメータの数が同じでも、型が異なればオーバーロードできます。

void Display(int a) { ... }
void Display(string b) { ... }

実例:

using System;

namespace MethodOverload {
    class Program {
        // intパラメータ
        void Display(int a) {
            Console.WriteLine("int type: " + a);
        }

        // stringパラメータ
        void Display(string b) {
            Console.WriteLine("string type: " + b);
        }

        static void Main(string[] args) {
            Program p1 = new Program();
            p1.Display(100);
            p1.Display("Programiz");
            Console.ReadLine();
        }
    }
}

出力

int type: 100
string type: Programiz

3. パラメータの順序を変える

パラメータの型と数が同じでも、順序を入れ替えれば別のオーバーロードになります。

void Display(int a, string b) { ... }
void Display(string b, int a) { ... }

実例:

using System;

namespace MethodOverload {
    class Program {
        // int, string の順
        void Display(int a, string b) {
            Console.WriteLine("int: " + a);
            Console.WriteLine("string: " + b);
        }

        // string, int の順
        void Display(string b, int a) {
            Console.WriteLine("string: " + b);
            Console.WriteLine("int: " + a);
        }

        static void Main(string[] args) {
            Program p1 = new Program();
            p1.Display(100, "Programming");
            p1.Display("Programiz", 400);
            Console.ReadLine();
        }
    }
}

出力

int: 100
string: Programming
string: Programiz
int: 400

C言語

  1. EPAメソッド21:包括的な漏洩検知・修復プロトコル
  2. C# 抽象クラスと抽象メソッドをマスターする:実践ガイド
  3. C# 部分クラスと部分メソッドを理解する
  4. C# sealed クラスとメソッドをマスターする:使用判断、実例、コードの安全性とパフォーマンス向上
  5. C#コンストラクタオーバーロード完全ガイド:柔軟なクラス設計
  6. C#のメソッド:定義、呼び出し、パラメータ渡し、再帰を完全解説
  7. C#の演算子オーバーロード:カスタム型で演算子を再定義する
  8. C# 匿名メソッド:デリゲート利用をシンプルにする技法
  9. Verilogタスクの理解:関数との違い、構文、使用法
  10. Verilog表示タスクのマスター:効率的なデバッグとログ出力
  11. Python演算子オーバーロード完全ガイド:__add__、__lt__など特殊メソッドでOOP設計を強化