以下に、C#のデストラクターの例をいくつか示します。
例1: デストラクターの基本的な使用方法
using System;
class MyClass
{
~MyClass()
{
// デストラクターのコード
Console.WriteLine("MyClassのデストラクターが呼び出されました。");
}
}
class Program
{
static void Main()
{
MyClass obj = new MyClass();
obj = null; // オブジェクトへの参照を解除する
GC.Collect(); // ガベージコレクターを明示的に呼び出す
// デストラクターが実行されるまで待機
Console.ReadKey();
}
}
この例では、MyClass
クラスにデストラクターを定義しています。Main
メソッドでは、MyClass
のオブジェクトを作成し、オブジェクトへの参照を解除した後、ガベージコレクターを明示的に呼び出しています。その後、デストラクターが実行されるまで待機します。
例2: デストラクターでリソースの解放
using System;
class DatabaseConnection
{
private string connectionString;
public DatabaseConnection(string connectionStr)
{
connectionString = connectionStr;
// データベースへの接続を確立するコード
Console.WriteLine("データベースに接続しました。");
}
~DatabaseConnection()
{
// データベース接続を解放するコード
Console.WriteLine("データベース接続を解放しました。");
}
}
class Program
{
static void Main()
{
DatabaseConnection connection = new DatabaseConnection("connection string");
// 何らかの処理
connection = null;
GC.Collect();
// デストラクターが実行されるまで待機
Console.ReadKey();
}
}
この例では、DatabaseConnection
クラスがデータベースへの接続を確立するコードを含んでいます。デストラクターでは、データベース接続を解放するコードが実行されます。Main
メソッドでは、DatabaseConnection
のオブジェクトを作成し、オブジェクトへの参照を解除し、ガベージコレクターを明示的に呼び出しています。
デストラクターは、オブジェクトの解放やリソースの解放など、クリーンアップが必要な場合に使用されます。ただし、デストラクターの正確なタイミングはガベージコレクターに依存するため、明示的に呼び出す必要はありません。通常、C#ではファイナライザーの代わりにIDisposable
インターフェースを使用してリソースの解放を行うことが推奨されています。
以上がC#のデストラクターの例です。デストラクターはメモリ管理において重要な役割を果たすため、適切に使用する必要があります。