Partilhar via


Design do construtor de tipo

Um construtor de tipo é usado para inicializar dados estáticos em um tipo. Ele é chamado pelo common language runtime (CLR), antes de quaisquer instâncias do tipo são criadas. Construtores de tipo são static (Shared em Visual Basic) e não podem receber parâmetros.

As diretrizes a seguir ajudam a garantir que seu uso de construtores estáticos é compatível com as práticas recomendadas.

Verifique construtores de tipo particular.

Um construtor de tipo, também chamado de construtor de classe ou um construtor estático, é usado para inicializar um tipo. O CLR chama o construtor do tipo antes que a primeira instância do tipo é criada ou quaisquer membros estáticos no tipo são chamados. Se um construtor de tipo não é particular, pode ser chamado pelo código diferente, por exemplo, o CLR. Dependendo das operações executadas no construtor, isso pode causar um comportamento inesperado.

Não é lança exceções de construtores de tipo.

Se um construtor de tipo lança uma exceção, o tipo não é utilizável no domínio do aplicativo onde a exceção foi lançada.

Considere inicializar campos estáticos in-line, em vez de explicitamente usando construtores estáticos, porque o CLR pode otimizar o desempenho de tipos não tem um construtor estático explicitamente definido.

O exemplo de código a seguir demonstra um design que não pode ser otimizado.

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...
};

O exemplo de código a seguir pode ser otimizado.

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. Todos os direitos reservados.

Portions Copyright Addison-Wesley Corporation. Todos os direitos reservados.

Para obter mais informações sobre as diretrizes de design, consulte a "diretrizes de Design do Framework: Convenções, idiomas e padrões de reutilizável.Bibliotecas de rede" catálogo por Krzysztof Cwalina e Brad Abrams, publicado pela Addison-Wesley, 2005.

Consulte também

Conceitos

Design do construtor

Outros recursos

Diretrizes de Design do membro

Diretrizes de Design para desenvolvimento bibliotecas de classe