.net column

.NET開発者のためのブログメディア
ゴミ箱

C#のデストラクタ(ファイナライザー)を使ってできること

2020年02月18日

C#を勉強していると、リソースの破棄絡みで「デストラクタ」という言葉を聞く機会があるかと思います。本記事では、デストラクタ(ファイナライザー)の概要や使い方を解説しています。ぜひ、参考にしてみてください。

PG
コンストラクタなら聞いたことがありますが、デストラクタとは何でしょうか……?
PM
デストラクタはC#でメモリの管理を行う際に使うメソッドですね。注意点もあるので、ここで使い方を覚えておきましょう!

C#のデストラクタとは

はじめに、デストラクタについて知識を入れておきましょう。デストラクタ(ファイナライザ)とは、ガベージコレクターによってインスタンスが破棄されるときに呼び出されるメソッドです。

【知識】
ガベージコレクター…プログラムが動的に確保したメモリ領域を解放する機能「ガベージコレクション」を行うもの。

そして、以下のような特徴があります。

  • ・クラスでのみ使用できる(構造体では不可)
  • ・1つのクラスにつき1つのデストラクタ
  • ・いつ実行されるかは指定できない

とはいえ、あまりピンと来ないと思いますので、さっそく次項でサンプルプログラムを紹介します。

デストラクタの使用例

ここでは、実際にデストラクタを使用し、その役割について解説していきたいと思います。デストラクタは以下のように、クラス名の前に「~」を付けて定義します。

では、デストラクタを呼んでみましょう。

そして、こちらが実行結果です。
デストラクタの呼び出し

PG
あれ、デストラクタが呼ばれていませんね……。
PM
先ほど説明したとおり、デストラクタは「いつ呼び出されるか分からない」という特徴があります。アンマネージリソースで使用するのは控えるようにしましょう。

デストラクタは確実にインスタンスを破棄してくれるメソッド

今回はデストラクタの概要から使い方までを解説していきました。デストラクタは確実にインスタンスを破棄してくれるメソッドです。しかし、「いつ実行されるか分からない」というデメリットもあるため、Disposeメソッドを呼び出すusingと一緒に使用するようにしてください。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

求人一覧

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)