MOの気になることを適当に伝えるブログ

moNote

C#

C# - コンストラクタ

投稿日:

C# の コンストラクタの説明

コンストラクタ

コンストラクタは オブジェクトの生成と同時に自動的に実行される メソッドで、クラスと同じ名前の 戻り値を持たない。

    class Program
    {
        static void Main(string[] args)
        {
            myClass obj = new myClass();
            Console.Read();
        }
    }

    class myClass          // クラス名
    {
        public int a, b;

        public myClass()   // コンストラクタ
        {
            Console.WriteLine("constructor");
            a = 0;
            b = 0;
        }
    }
constructor

コンストラクタを1つも定義していない場合、自動的にデフォルトコンストラクタと呼ばれるコンストラクタが作成されます。デフォルトコンストラクタは中身が空ですので何もしません。

引数のあるコンストラクタ

    class Program
    {
        static void Main(string[] args)
        {
            myClass obj = new myClass(5, 8);  // 引数を指定

            Console.Read();
        }
    }

    class myClass
    {
        public int a, b;

        public myClass()                 // 引数なし
        {
            a = 0;
            b = 0;
        }

        public myClass(int s1)           // 引数1つ
        {
            a = s1;
            b = 0;
        }

        public myClass(int s1, int s2)   // 引数2つ
        {
            a = s1;
            b = s2;
        }
    }

上記のように コンストラクタもオーバーロードで複数指定することができます。

コピーコンストラクター

同じクラスのオブジェクトを引数として受け取り、対応するフィールドに値を引き継ぐコンストラクターことを、コピーコンストラクターといい、受け取ったオブジェクトを複製できます。

    class Program
    {
        static void Main(string[] args)
        {
            myClass obj1 = new myClass(5, 8);
            myClass obj2 = new myClass(obj1);   
            
            obj2.b = 10;

            Console.WriteLine(obj2.a);
            Console.WriteLine(obj2.b);
            Console.Read();
        }
    }

    class myClass
    {
        public int a, b;

        public myClass() 
        {
            a = 0;
            b = 0;
        }

        public myClass(int s1, int s2) 
        {
            a = s1;
            b = s2;
        }

        // コピーコンストラクター
        public myClass(myClass copy)   
        {
            a = copy.a;
            b = copy.b;
        }
    }
5
10

-C#
-

Copyright© moNote , 2020 All Rights Reserved Powered by STINGER.