共用方式為


型別建構函式設計

更新:2007 年 11 月

型別建構函式是用來初始化型別中的靜態資料,Common Language Runtime (CLR) 會在建立任何型別執行個體之前呼叫它。型別建構函式為 static (Visual Basic 中為 Shared),且不能接受參數。

下列方針可協助您確保您的靜態建構函式的用法有遵守最佳作法。

要將型別建構函式標記為私用。

型別建構函式 (也稱為類別建構函式或靜態建構函式) 是用於初始化型別。CLR 會在建立型別的第一個執行個體或呼叫型別上的任何靜態成員之前,呼叫型別建構函式。如果型別建構函式不是私用的,則可由 CLR 以外的程式碼呼叫。視建構函式 (Constructor) 中執行的作業而定,這會造成非預期的行為。

不要從型別建構函式擲回例外狀況。

如果型別建構函式擲回例外狀況,則此型別無法在擲回此例外狀況的應用程式定義域中使用。

請考慮初始化內嵌的靜態欄位,而不要明確使用靜態建構函式,因為 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.

如需設計方針的詳細資訊,請參閱由 Krzysztof Cwalina 和 Brad Abrams 所著,並由 Addison-Wesley 於 2005 年發行的「Framework 設計方針:可重複使用之 .NET 程式庫的慣例、慣用語法和模式」一書。

請參閱

概念

建構函式設計

其他資源

成員設計方針

開發類別庫的設計方針