Compartilhar via


Operador Overloads

Operador sobrecargas permitir que tipos de ser combinados e comparados usando operadores, sistema autônomo "+", "-", "=" e "! =". Adicionando sobrecargas de operador para um tipo, permitem que sistema autônomo desenvolvedores usam o tipo sistema autônomo se fosse um tipo primitivo interno. Sobrecarga de operador deve ser concluído somente quando o significado da operação é intuitivo para o tipo (por exemplo, para suporte à adição de duas instâncias de um tipo que representa um valor numérico). Sobrecarga de operador não deve ser usado para fornecer um atalho sintático para operações não intuitivas.

O exemplo a seguir mostra a assinatura para a operação de adição do DateTime classe.

[Visual Basic]

Public Shared Function op_Addition(ByVal d As DateTime, _
ByVal t As TimeSpan _
) As DateTime

[C#]

public static DateTime op_Addition(
DateTime d, 
TimeSpan t
);

Evite definir sobrecargas de operador, exceto em tipos que devem funcionar como tipos primitivos (internos).

Considere definir sobrecargas do operador em um tipo que deve funcionar como um tipo primitivo.

Por exemplo, String Define operador == e operador! =.

Defina sobrecargas do operador em estruturas que representam números (sistema autônomo sistema.decimal).

Não se inteligente ao definir o operador sobrecargas.Sobrecarga de operador é útil em casos em que é imediatamente óbvia qual será o resultado da operação.Por exemplo, faz sentido para subtrair um objeto sistema.DateTime de outro objeto sistema.DateTime e obter um objeto sistema.TimeSpan.No entanto, não é apropriado para usar o operador de união lógico para consultas união de dois banco de dados ou usar o operador de deslocamento para gravar em um fluxo.

Não fornecem sobrecargas do operador a menos que pelo menos um dos operandos é do tipo definindo a sobrecarga.

O compilador translation from VPE for Csharp impõe essa diretriz.

Fazer sobrecarga operadores de forma simétrica.

Por exemplo, se você sobrecarga o operador de igualdade, você deve também sobrecarga o operador de desigualdade. Da mesma forma, se você sobrecarregar o menor - que o operador, você deve também sobrecarregar maior - que o operador.

Considere fornecer métodos com nomes amigáveis correspondente a cada operador sobrecarregado.

Você deve estar em conformidade com essa diretriz para ser compatível com CLS. A tabela a seguir contém uma lista de símbolos de operador e seus correspondente Alternativa métodos e os nomes de operador.

Símbolo do operador translation from VPE for Csharp

Nome do método alternativo

Nome do operador

Não definido

ToXxx or FromXxx

op_Implicit

Não definido

ToXxx or FromXxx

op_Explicit

+ (binário)

Adicionar

op_Addition

-(binário)

Subtrair

op_Subtraction

* (binário)

Multiplicar

op_Multiply

/

Dividir

op_Division

%

Mod

op_Modulus

^

Xor

op_ExclusiveOr

&(binário)

BitwiseAnd

op_BitwiseAnd

|

BitwiseOr

op_BitwiseOr

&&

And

op_LogicalAnd

||

Ou

op_LogicalOr

=

Atribuir

op_Assign

<<

LeftShift

op_LeftShift

>>

RightShift

op_RightShift

Não definido

LeftShift

op_SignedRightShift

Não definido

RightShift

op_UnsignedRightShift

==

Equals

op_Equality

>

CompareTo

op_GreaterThan

<

CompareTo

op_LessThan

!=

Equals

op_Inequality

>=

CompareTo

op_GreaterThanOrEqual

<=

CompareTo

op_LessThanOrEqual

*=

Multiplicar

op_MultiplicationAssignment

-=

Subtrair

op_SubtractionAssignment

^=

Xor

op_ExclusiveOrAssignment

<<=

LeftShift

op_LeftShiftAssignment

%=

Mod

op_ModulusAssignment

+=

Adicionar

op_AdditionAssignment

&=

BitwiseAnd

op_BitwiseAndAssignment

|=

BitwiseOr

op_BitwiseOrAssignment

,

Vírgula

op_Comma

/=

Dividir

op_DivisionAssignment

--

Decréscimo

op_Decrement

++

Incremento

op_Increment

-(unário)

Negar

op_UnaryNegation

+ (unário)

Sinal de mais

op_UnaryPlus

~

OnesComplement

op_OnesComplement

Partes direitos autorais 2005 Microsoft Corporation. Todos os direitos reservados.

Partes direitos autorais Addison-Wesley Corporation. Todos os direitos reservados.

Para obter mais informações sobre diretrizes de design, consulte a "diretrizes de design do estrutura: Catálogo de convenções, idiomas e padrões para bibliotecas do .NET reutilizável"Krzysztof Cwalina e Brad Abrams, publicado pela Addison-Wesley, 2005.

Consulte também

Outros recursos

Diretrizes de design de membro

Diretrizes de Design para desenvolvimento bibliotecas de classe