C#

【C#】コンストラクタとデストラクタ

こんにちは、リバティエンジニア[?]のFUNAです。 現役エンジニアとしてアプリケーション開発やWeb制作、SEOやブログ運営をしています。

今回は、C#におけるコンストラクタとデストラクタの役割や使い方の説明をしていきます。

c# コンストラクタとは?

コンストラクタとは一言でいうと、
クラスのインスタンスが生成されたときに実行される初期化処理のようなものてす。

c#では

class testClass = new class();

とすることで指定したクラスのインスタンスを作ります。
このインスタンスが作られたときに、コンストラクタに記述された処理が実行されることになります。

コンストラクターは以下のように、クラス名と同じ名前のメソッドを書くことで定義できます。

class SampleClass
{
    // コンストラクター
    SampleClass()
    {
      // インスタンスの初期化用のコードを書く
    }
}

通常のメソッドと違うところは、戻り値の型を書くことはしません。
(※というか、コンストラクターは戻り値を返すことは出来ません)

c# デストラクタとは?

デストラクターは、オブジェクトが「ガベージコレクション」に回収されるときに呼び出される特別なメソッドとなります。

基本的には確保したリソースの後片付けはDisposeメソッドやusingステートメントを使って行うのですが、usingステートメントは呼び忘れる可能性が0ではなく、100%後片付けできるとは限りません。

ですが、「ガベージコレクション」によって回収されるタイミングだと"呼び忘れ"がなくなります。

そのため、確実に解放しなければならないリソースは、Disposeメソッドだけでなく「デストラクター」でも後片付けを行うといいです。

実装サンプルコードをご紹介します。

class SampleClass
{
    // コンストラクター
    SampleClass()
    {
        // インスタンス初期化用のコードを書く
    }
    // デストラクター
    ~SampleClass()
    {
        // インスタンス破棄用のコードを書く
    }
}

このようにコンストラクタで初期化してデストラクタでインスタンスを破棄する。
これだけはとりあえず覚えておいてください。

デストラクタの注意点としては、コンストラクタと違い自分で呼び出すようなものではないので、引数を持たせることはできません。

※注意※ デストラクターの呼び出しタイミング

.NET Frameworkでは、インスタンスの寿命は.NET自体が管理しているため、いつインスタンスの破棄が行われるのかが分かりません。

using System;

class Test
{
    public Test()
    {
        Console.Write("Test クラスのコンストラクターが呼ばれたn");
    }

    ~Test()
    {
        Console.Write("Test クラスのデストラクターが呼ばれたn");
    }
}

class DestructorTest
{
    static void Main()
    {
        Console.Write("1n");
        // ここでTestのコンストラクターが呼ばれる
        Test t = new Test();
        Console.Write("2n");
        // 上記で作成したインスタンスはもう利用されない
        t = null;
        // ※デストラクターはまだ呼ばれない
        Console.Write("3n");
    }
}

実行結果 :

1
Test クラスのコンストラクターが呼ばれた
2
3
Test クラスのデストラクターが呼ばれた

このように、デストラクターはプログラムの終了時(ガベージコレクションが動くタイミング)に呼び出されます。

ガベージコレクションのタイミングを制御することは基本的にできないのでデストラクターはいつ呼び出されるかわかりません。

上記のことを念頭において注意してさえいれば便利に使うことができるので是非活用してみてください。

C#は他にも記事を書いているのでよければ色々見ていってください。

C# コントロールのイベントを一時的に無効化する方法

[C#] Windows.Formsのイベントが発生する順番は?

【結論】未経験でプログラミングの独学はぜんぜん可能

【C#】例外処理でアプリケーションを安全に(try-catch-finally)


 

Kindle Unlimitedで無料で本が読める

 

Kindle Unlimitedを無料で試す

 

なら最初の30日間は無料でコーディング・デザイン・ブログ・英語・Youtubeの参考書・キャリア・副業・マーケティング・漫画・美容知識・雑誌などが読み放題です。

人気の本もあるので是非お試ししてみてください!30日以内に解約すればお金は全くかかりません。

 


最近の投稿

【今すぐ行動しよう】フリーランスエンジニアとブログの相性は抜群!

フリーランスエンジニアがスキルや経験から得たビジネスノウハウを共有する手段として「ブログ」は非常におすすめです。自身のスキルや知識のアウトプットや、実際に自分が経験したことを共有して同じような境遇の人の手助けになるような情報を公開することで自分に帰ってくるメリットは非常に多いです。今回はそのあたりについて紹介していきます。

【経験談】フリーランスのエンジニアは本当に大変なの?安定のコツやポイント

フリーランスのエンジニアは「大変だからやめとけ」という話をよく聞くので、そのことについて現役でフリーランスエンジニアとして生活している私が、その話の実態を解説しようと思います。フリーランスエンジニアの大変なところはもちろんありますが、それ以上にメリットが多いので私個人的には非常におすすめしています。

【幸福度UP】フリーランスエンジニアの「田舎暮らし」実現できます

フリーランスエンジニアとして田舎で暮らす人が増えてるって聞くけど、本当なのかな?どうやったら実現できるのか?今回はフリーランスエンジニアとして田舎で生活をしたいという方向けに、実現可能なのか、実現するにはどうすれば良いのかをご紹介します。

【単価交渉で収入アップ】フリーランスが単価交渉を成功させる4つのポイント

フリーランスが収入をアップさせるための重要な手段のひとつに「単価交渉」があります。今回は、現役でフリーランスとしてエンジニアをしている私が実践して効果のあった単価交渉の方法やコツをご紹介します。

【 今なら無料!】タスク管理ツール「Backlog」を無料で使う方法と手順

今回は、普段のタスク管理からプロジェクトの管理まで幅広く使えるツール「Backlog」を無料で使うための方法とその手段を画像つきで紹介しました。もし気に入らなければ、期間内に解約してしまえば費用はかかりません。また、以外と知られていない「フリープラン」も紹介しているので、是非参考にしてみてください。

Copyright© FUNA BLOG , 2021 All Rights Reserved.