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
Outros recursos
Diretrizes de Design do membro
Diretrizes de Design para desenvolvimento bibliotecas de classe