次の方法で共有


型コンストラクターのデザイン

型の静的データを初期化する場合、型コンストラクターを使用します。 型コンストラクターは、型のインスタンスが作成される前に、共通言語ランタイム (CLR: Common Language Runtime) によって呼び出されます。 型コンストラクターは static (Visual Basic では Shared) であり、パラメーターを受け取りません。

推奨される手順で静的コンストラクターを使用するには、次のガイドラインに従います。

型コンストラクターはプライベートにします。

型コンストラクター (クラス コンストラクターまたは静的コンストラクターとも呼ばれます) は、型を初期化するために使用します。 型コンストラクターは、型の最初のインスタンスが作成されるか、型の静的メンバーが呼び出される前に、CLR によって呼び出されます。 型コンストラクターがプライベートでない場合は、CLR 以外のコードによって呼び出されることがあります。 その結果、コンストラクター内で実行される演算によっては、予期しない動作が発生する可能性があります。

型コンストラクターから例外をスローしないようにします。

型コンストラクターが例外をスローした場合、例外がスローされたアプリケーション ドメイン内でその型を使用できません。

静的コンストラクターを明示的に使用する代わりに、静的フィールドをインラインで初期化することを検討します。明示的に定義された静的コンストラクターを持たない型のパフォーマンスは、CLR によって最適化されるからです。

最適化できないデザインを次のコード例に示します。

Public Class BadStaticExample
    Shared runId as Guid
    Shared Sub New()
        runId  = Guid.NewGuid()
    End Sub
    ' Other members...
End Class
public class BadStaticExample
{
    static Guid runId;
    static BadStaticExample()
    {
        runId  = Guid.NewGuid();
    }
    // Other members...
}
public ref class BadStaticExample
{
    static Guid runId;
    static BadStaticExample()
    {
        runId  = Guid::NewGuid();
    }
    // Other members...
};

次のコード例は最適化できます。

Public Class GoodStaticExample
    Shared runId as Guid = Guid.NewGuid()
    ' Other members...
End Class
public class GoodStaticExample
{
    static Guid runId  = Guid.NewGuid();
    // Other members...
}
public ref class GoodStaticExample
{
    static Guid runId  = Guid::NewGuid();
    // Other members...
};

Portions Copyright 2005 Microsoft Corporation. All rights reserved.

Portions Copyright Addison-Wesley Corporation. All rights reserved.

設計ガイドラインの詳細についてを参照してください、「フレームワークの設計ガイドライン。規則、慣用句、および再利用可能なパターン。ネット ライブラリ」本クシシュトフ Cwalina、ブラッド エイブラムス、アスキー、2005 年発表しました。

参照

概念

コンストラクターのデザイン

その他の技術情報

メンバーのデザインのガイドライン

クラス ライブラリ開発のデザイン ガイドライン