C# コンストラクターのオーバーロード
C# コンストラクターのオーバーロード
この記事では、例を使用して C# でのコンストラクターのオーバーロードについて学習します。
C# では、メソッドのオーバーロードと同様に、コンストラクターをオーバーロードすることもできます。コンストラクターのオーバーロードの場合、同じ名前で異なるコンストラクターが 2 つ以上存在する必要があります
- パラメータ数
- パラメータの種類
- パラメータの順序
コンストラクターのオーバーロードについて学習する前に、C# コンストラクターについて知っておく必要があります。
次の方法でコンストラクターのオーバーロードを実行できます:
1.パラメータの数が異なる
コンストラクター内のパラメーターの数が異なる場合、コンストラクターをオーバーロードできます。
class Car {
Car() {
...
}
Car(string brand) {
...
}
Car(string brand, int price) {
...
}
}
ここでは、クラス Car に 3 つのコンストラクターがあります。 .コンストラクターのパラメーターの数が異なるため、複数のコンストラクターを持つことができます。
Car() { }
- パラメータなしCar(string brand) { }
- パラメータは 1 つCar(string brand, int price) { }
- 2 つのパラメータがあります
例:パラメータの数が異なるコンストラクタのオーバーロード
using System;
namespace ConstructorOverload {
class Car {
// constructor with no parameter
Car() {
Console.WriteLine("Car constructor");
}
// constructor with one parameter
Car(string brand) {
Console.WriteLine("Car constructor with one parameter");
Console.WriteLine("Brand: " + brand);
}
static void Main(string[] args) {
// call with no parameter
Car car = new Car();
Console.WriteLine();
// call with one parameter
Car car2 = new Car("Bugatti");
Console.ReadLine();
}
}
}
出力
Car constructor Car constructor with one parameter Brand: Bugatti
上記の例では、Car をオーバーロードしています。 コンストラクタ:
<オール>コンストラクターの呼び出し中に渡された引数の数に基づいて、対応するコンストラクターが呼び出されます。
ここで、
- オブジェクト車 - 1 つのパラメーターでコンストラクターを呼び出します
- オブジェクト car2 - 2 つのパラメーターでコンストラクターを呼び出します
2.さまざまなタイプのパラメータ
class Car {
Car(string brand) {
...
}
Car(int price) {
...
}
}
ここに、2 台の 車 があります 同じ数のパラメーターを持つコンストラクター。パラメータ内のデータ型が異なるため、同じパラメータでコンストラクタを作成できます。
Car(string brand) { }
-string
のパラメータがあります タイプCar(int price) { }
-int
のパラメータがあります タイプ
例:さまざまなタイプのパラメーターによるコンストラクターのオーバーロード
using System;
namespace ConstructorOverload {
class Car {
// constructor with string parameter
Car(string brand) {
Console.WriteLine("Brand: " + brand);
}
// constructor with int parameter
Car(int price) {
Console.WriteLine("Price: " + price);
}
static void Main(string[] args) {
// call constructor with string parameter
Car car = new Car("Lamborghini");
Console.WriteLine();
// call constructor with int parameter
Car car2 =new Car(50000);
Console.ReadLine();
}
}
}
出力
Brand: Lamborghini Price: 50000
上記のプログラムでは、さまざまなタイプのパラメーターでコンストラクターをオーバーロードしています。
ここで、
<オール>string
でコンストラクターを呼び出します 型パラメータint
でコンストラクターを呼び出します 型パラメータ3.パラメータの異なる順序
Car {
Car(string brand, int price) {
...
}
Car(int speed, string color) {
...
}
}
ここでは、同じ数のパラメーターを持つ 2 つのコンストラクターがあります。これは、パラメーターのデータ型の順序が異なるために可能です。
Car(string brand, int price) { }
-string
int
の前にデータ型がありますCar(int speed, string color) { }
-int
string
の前にデータ型があります
例:パラメータの順序が異なるコンストラクタのオーバーロード
using System;
namespace ConstructorOverload {
class Car {
// constructor with string and int parameter
Car(string brand, int price) {
Console.WriteLine("Brand: " + brand);
Console.WriteLine("Price: " + price);
}
// constructor with int and string parameter
Car(int speed, string color) {
Console.WriteLine("Speed: " + speed + " km/hr");
Console.WriteLine("Color: " + color);
}
static void Main(string[] args) {
// call constructor with string and int parameter
Car car = new Car("Bugatti", 50000);
Console.WriteLine();
// call constructor with int and string parameter
Car car2 =new Car(60, "Red");
Console.ReadLine();
}
}
}
出力
Brand: Bugatti Price: 50000 Speed: 60 km/hr Color: Red
上記のプログラムでは、さまざまな順序のパラメーターでコンストラクターをオーバーロードしています。
ここで、
<オール>string
でコンストラクターを呼び出します そして int
それぞれのパラメータint
でコンストラクターを呼び出します と string
それぞれのパラメータC言語