C_Sharp-コンストラクタとデストラクタ

C#のコンストラクタとデストラクタについて

コンストラクタ(constructor)とは

コンストラクタとは、new演算子でインスタンスが生成されるときに、インスタンスの初期化処理として実行される関数です。

  • クラスの宣言の中に同名の関数があれば、その関数が自動実行されます。
  • コンストラクタは初期化処理を行うための関数であるため、関数の返り値を指定できません。
  • コンストラクタには引数を渡すこともできます。
    • C#のコンストラクタには「初期化リスト」機能がありません。
    • クラス内変数の初期化はコンストラクタの引数渡しによって設定する必要があります。

class MsgInfo
{
    public string msg;

    // コンストラクタ
    public MsgInfo(string msg)
    {
        this.msg = msg;
    }
}

class Program
{
    static int Main() 
    {
        MsgInfo obj = new MsgInfo("constructor");

        System.Console.WriteLine(obj.msg);

        return(0);
    }
}

デストラクタ(destructor)とは

デストラクタとは、オブジェクトが消滅する時に後始末をする後処理関数です。

  • クラス名の先頭に「~」チルダを付けることで定義します。
  • 戻り値や引数を指定することはできません。
  • デストラクタが呼び出される時点は、オブジェクトが消滅する時です。
    • ただし、「.NET Framework」では、インスタンスの寿命は「.NET Framework」自体が管理(ガベージコレクション)しており、いつインスタンスの破棄が行われるのかは分かりません。 (C++ 言語のようにdelete演算子がありませんので、使用に際して注意が必要です。)

class MsgInfo
{
    public string msg;

    // コンストラクタ
    public MsgInfo(string msg){ this.msg = msg; }

    // デストラクタ
    ~MsgInfo()
    {
        System.Console.WriteLine("destructor");
    }
}

class Program
{
    static void func()
    {
        MsgInfo obj = new MsgInfo("constructor");
        System.Console.WriteLine(obj.msg);
    }
    static int Main() 
    {
        System.Console.WriteLine("execute func()");
        func();
        System.Console.WriteLine("return to main()");
        return(0);
    }
}


関連ページ