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
渡される引数の数に応じて、適切なオーバーロードが呼び出されます。
p1.Display(100)→ 1パラメータ版が呼ばれるp1.Display(100, 200)→ 2パラメータ版が呼ばれる
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
p1.Display(100)→int版が呼ばれるp1.Display("Programiz")→string版が呼ばれる
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
p1.Display(100, "Programming")→int, string版が呼ばれるp1.Display("Programiz", 400)→string, int版が呼ばれる
C言語
- EPAメソッド21:包括的な漏洩検知・修復プロトコル
- C# 抽象クラスと抽象メソッドをマスターする:実践ガイド
- C# 部分クラスと部分メソッドを理解する
- C# sealed クラスとメソッドをマスターする:使用判断、実例、コードの安全性とパフォーマンス向上
- C#コンストラクタオーバーロード完全ガイド:柔軟なクラス設計
- C#のメソッド:定義、呼び出し、パラメータ渡し、再帰を完全解説
- C#の演算子オーバーロード:カスタム型で演算子を再定義する
- C# 匿名メソッド:デリゲート利用をシンプルにする技法
- Verilogタスクの理解:関数との違い、構文、使用法
- Verilog表示タスクのマスター:効率的なデバッグとログ出力
- Python演算子オーバーロード完全ガイド:__add__、__lt__など特殊メソッドでOOP設計を強化