LoginSignup
3
0

【C#】デフォルト引数を使用したコンストラクタについて

Posted at

はじめに

デフォルト引数を使用することによって、
コンストラクタのオーバーライドを省略する記述方法を初めて知ったので、
簡単にまとめてみました。

環境
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#初心者かつ初めての技術記事で、読みにくい部分や間違っている箇所があるかもしれません。
申し訳ありませんが、ご指摘いただけると幸いです。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0