Share via


Operadores de conversão

Os operadores de conversão converter um objeto de um tipo para outro tipo. Os operadores de conversão podem ser implícitas ou explícitas. Operadores de conversão implícita não requerem um tipo de conversão a ser especificado no código-fonte executar a conversão. Operadores de conversão explícita exigem uma conversão de tipo estar presentes no código fonte para executar a conversão.

A assinatura a seguir mostra a Point operador de conversão explícita da classe para converter entre um Point e um Size.

[Visual Basic]

Public Shared Function op_Explicit( _
ByVal p As Point _
) As Size

[C#]

public static Size op_Explicit(
Point p
);

Não forneça um operador de conversão se tal conversão não é claramente esperada pelos usuários finais.

Idealmente, os dados de pesquisa do cliente devem existir para oferecer suporte a definição de um operador de conversão. Como alternativa, o suporte para definir o operador pode ser na forma de exemplos que precisa de um ou mais tipos semelhantes de onde tal conversão.

Não defina os operadores de conversão fora do domínio de um tipo.

Por exemplo, Int32, Double, e Decimal são todos os tipos numéricos, enquanto DateTime é não. Convertendo um Double Digite para um DateTime tipo não deve ser implementado como um operador de conversão. Use um construtor para converter um tipo para outro tipo que não esteja no mesmo domínio.

Se a conversão é potencialmente com perdas, não fornecem um operador de conversão implícita.

Por exemplo, não deve haver uma conversão implícita de Double para Single porque Double tem uma precisão maior do que uma Single. Um operador de conversão explícita pode ser fornecido para conversões de perdas.

Não é lança exceções de conversões implícitas.

Conversões implícitas são chamados pelo sistema; o usuário pode não estar ciente de que a conversão está ocorrendo e terão dificuldade para depurar o código.

Lança o System. InvalidCastException se uma chamada para um operador de conversão resulta em uma conversão de perdas e o contrato do operador não permite conversões com perdas.

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

Outros recursos

Diretrizes de Design do membro

Diretrizes de Design para desenvolvimento bibliotecas de classe