C# コンストラクタのサンプル

C#のコンストラクタのサンプルです。

目次

コンストラクタ

class クラス名 {
  コンストラクタ名(引数){
    処理
  }
}
  • コンストラクタは、new演算子でクラスをインスタンス化する時に呼ばれます。
  • クラスの初期値を設定するときなどに使用されます。
  • コンストラクタ名は、クラス名と同じにします。
  • 戻り値はないので、戻り値の記述はしません。
  • コンストラクタをオーバーロードすることもできます。
  • 以下はMicrosoftのC#のコンストラクタのリンクです。
    https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/constructors

コード

コンストラクタのサンプルです。

using System;

namespace Project1
{
    class Class1
    {
        private string name;

        public Class1(string name)
        {
            this.name = name;
        }

        public string getName()
        {
            return name;
        }
    }
    class Test1
    {
        static void Main()
        {
            Class1 c1 = new Class1("緑");

            string message1 = c1.getName();

            Console.WriteLine(message1); // 緑
        }
    }
}

9行目がコンストラクタです。5行目のクラス名(Class1)と同じ名前にします。
23行目でインスタンスが生成されると9行目のコンストラクタが呼ばれて11行目で引数の値(緑)が7行目の変数にセットされます。

コンストラクタのオーバーロード

コンストラクタのオーバーロードのサンプルです。

using System;

namespace Project1
{
    class Class1
    {
        private string name;

        public Class1()
        {
            this.name = "みかん";
        }

        public Class1(string name)
        {
            this.name = name;
        }

        public Class1(int num)
        {
            this.name = "りんご";
        }

        public string getName()
        {
            return name;
        }
    }
}

9,14,19行目がオーバーロードです。コンストラクタ名が同じで引数が異なるものです。

9行目は、インスタンス化する時に引数がない場合に実行されます。
14行目は、インスタンス化する時にstring型の引数が1つのときに実行されます。
19行目は、インスタンス化する時にint型の引数が1つのときに実行されます。

 

コンストラクタを自動で生成する

コンストラクタを自動で生成する方法です。(Microsoft Visual Studio Community 2017で確認)

1.クラス名をクリックすると左端に電球のアイコンが表示されます。

 

2.電球の右にある下三角形をクリックし、「コンストラクターを生成する」をクリックします。

 

3.コンストラクターのパラメーターにする項目にチェックを入れます。

 

4.コンストラクターが生成されました。図の赤枠の部分です。

デストラクタ

class クラス名 {
  ~デストラクタ名(){
    処理
  }
}
  • デストラクタは、インスタンスが消えるときに呼ばれます。
  • 処理がいつ実行されるかわからないのであまり使用されません。
    →インスタンスはガベージコレクションの仕組みで消されます。
  • デストラクタ名は、クラス名と同じにして先頭にチルダ(~)をつけます。

コード

デストラクタのサンプルです。

using System;

namespace Project1
{
    class Class1
    {
        private string name;

        public Class1()
        {
            name = "test1";
        }

        ~Class1()
        {
            name = "test2";
        }
    }
    class Test1
    {
        static void Main()
        {
            Class1 c1 = new Class1();
        }
    }
}

14行目がデストラクタです。9行目のクラス名(Class1)と同じ名前にします。
16行目は、インスタンスが消えるときに実行されます。

関連の記事

C#入門 クラスの仕組みとサンプル
C# クラスの継承の仕組みとサンプル

 

△上に戻る