更新 : 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』を参照してください。