はじめに
デフォルト引数を使用することによって、
コンストラクタのオーバーライドを省略する記述方法を初めて知ったので、
簡単にまとめてみました。
環境 | |
---|---|
OS | Windows10 22H2 |
エディター | Visual Studio 2022 |
コンストラクタをオーバーロードする場合
コンストラクタの引数が1つの場合と2つの場合がある際、
コンストラクタのオーバーロードが必須だと思っていました。
main.cs
public static class main
{
// メイン エントリ ポイント
static void Main()
{
// インスタンス生成
Animal r = new Animal("うさぎ");
Animal t = new Animal("かめ",10);
}
}
Animal.cs
public class Animal
{
public int id;
public string name;
// 引数が1つの場合のコンストラクタ
public Animal(string name)
{
this.id = 0;
this.name = name;
Console.WriteLine(name + "さん、" + "はじめまして!");
}
// 引数が2つの場合のコンストラクタ
public Animal(string name, int id = 0)
{
this.id = id;
this.name = name;
Console.WriteLine( name + "さん、" + "いつもありがとうございます!" );
}
}
コンストラクタの引数にデフォルト引数を使用する場合
デフォルト引数を使用すると、コンストラクタの引数が1つの場合も2つの場合も
共通のコンストラクタを使用できるので、オーバーロードする必要がなくなります。
コンストラクタの引数が1つの場合、idには0が設定されます。
Animal.cs
public class Animal
{
public int id;
public string name;
// コンストラクタ
public Animal(string name, int id = 0)
{
this.id = id;
this.name = name;
if (id == 0)
{
Console.WriteLine(name + "さん、" + "はじめまして!");
}
else
{
Console.WriteLine( name + "さん、" + "いつもありがとうございます!" );
}
}
}
result
うさぎさん、はじめまして!
かめさん、いつもありがとうございます!
このように、デフォルト引数を使用することによって、
コンストラクタの数を減らし、
記述を短くすることができました。
最後に
ここまでお読みいただき、ありがとうございます!
C#初心者かつ初めての技術記事で、読みにくい部分や間違っている箇所があるかもしれません。
申し訳ありませんが、ご指摘いただけると幸いです。