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) { }-stringintの前にデータ型がありますCar(int speed, string color) { }-intstringの前にデータ型があります
例:パラメータの順序が異なるコンストラクタのオーバーロード
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言語