C#のデストラクターの例


以下に、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#のデストラクターの例です。デストラクターはメモリ管理において重要な役割を果たすため、適切に使用する必要があります。