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