4

次のような静的コンストラクターの違いは何ですか:

class GlobalClass
{

    public static DataBase dataBase;

    static GlobalClass()
    {
        dataBase= new DataBase(@"Data Source=..;...; User ID=... ;Password=...;");
        dataBase.CreateConnection();
    }
}

また、グローバル クラスで静的インスタンスを次のように定義します。

class GlobalClass
{

    public static GlobalClass Globals = new GlobalClass();

    public DataBase dataBase;

    public  GlobalClass()
    {
        dataBase= new DataBase(@"Data Source=..;...; User ID=... ;Password=...;");
        dataBase.CreateConnection();
    }
}

それぞれのタイプの違いは?また、どちらが使いやすいですか?

4

2 に答える 2

3

最初のケースでは、最初にアクセスしたときにデータベースが一度だけ初期化されます。GlobalClass

2 番目のケースでは、インスタンスを作成するたびにデータベースが初期化されGlobalClassます。インスタンスなし - 初期化なし。2 つのインスタンス - 2 つの初期化 (フィールド経由で利用できるのは最後の 1 つだけですdataBase)。

于 2013-07-04T13:21:44.453 に答える
1

最初は機能が似ていますが、同じではありません。

2 番目のバージョンはシングルトン パターンの実装であり、2 つのうちより柔軟です。

最大の利点は、Globals割り当て可能であるため、再割り当てできることです。1 つの用途は、 のサブタイプが複数GlobalClassある場合です。特定のコンテキストに適切なサブタイプのインスタンスを割り当てることができます。

ここでシングルトンと静的の詳細を読むことができます:静的クラスとシングルトンパターンの違い?

于 2013-07-04T13:56:09.197 に答える