次の方法で共有


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

更新 : 2007 年 11 月

型の静的データを初期化する場合、型コンストラクタを使用します。型コンストラクタは、型のインスタンスが作成される前に、共通言語ランタイム (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 Class GoodStaticExample
    Shared runId as Guid = Guid.NewGuid()
    ' Other members...
End Class
public 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.

デザイン ガイドラインの詳細については、2005 年に Addison-Wesley から出版されている Krzysztof Cwalina、Brad Abrams 共著の『Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries』を参照してください。

参照

概念

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

その他の技術情報

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

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