Operador sobrecargas nomeou alternativas
TypeName |
OperatorOverloadsHaveNamedAlternates |
CheckId |
CA2225 |
Category (Categoria) |
Microsoft.uso |
Quebrando alterar |
Não separável |
Causa
Foi detectada uma sobrecarga de operador, e os esperados denominado Alternativa método não foi encontrado.
Descrição da regra
sobrecarga de operador permite o uso de símbolos para representar os cálculos para um tipo.Por exemplo, um tipo que sobrecarrega o símbolo de adição (+) para adição normalmente teria um Alternativa membro denominado 'Adicionar'.O nome Alternativa membro fornece acesso à mesma funcionalidade que o operador e é fornecido para sistema autônomo desenvolvedores que programam em idiomas que não oferecem suporte a sobrecarga de operadores.
Esta regra examina os operadores listados na tabela a seguir.
C# |
Visual Basic |
C++ |
Nome alternativo |
---|---|---|---|
+ (binário) |
+ |
+ (binário) |
Adicionar |
+= |
+= |
+= |
Adicionar |
& |
And |
& |
BitwiseAnd |
&= |
E = |
&= |
BitwiseAnd |
| |
Ou |
| |
BitwiseOr |
|= |
Ou = |
|= |
BitwiseOr |
-- |
N/A |
-- |
Decréscimo |
/ |
/ |
/ |
Dividir |
/= |
/= |
/= |
Dividir |
== |
= |
== |
Equals |
^ |
Xor |
^ |
Xor |
^= |
XOR = |
^= |
Xor |
> |
> |
> |
Compare |
>= |
>= |
>= |
Compare |
++ |
N/A |
++ |
Incremento |
!= |
<> |
!= |
Equals |
<< |
<< |
<< |
LeftShift |
<<= |
<<= |
<<= |
LeftShift |
< |
< |
< |
Compare |
<= |
<= |
<= |
Compare |
&& |
N/A |
&& |
LogicalAnd |
|| |
N/A |
|| |
LogicalOr |
! |
N/A |
! |
LogicalNot |
% |
Mod |
% |
Mod ou restante |
%= |
N/A |
%= |
Mod |
* (binário) |
* |
* |
Multiplicar |
*= |
N/A |
*= |
Multiplicar |
~ |
Not |
~ |
OnesComplement |
>> |
>> |
>> |
RightShift |
>>= |
N/A |
>>= |
RightShift |
-(binário) |
-(binário) |
-(binário) |
Subtrair |
-= |
N/A |
-= |
Subtrair |
True |
IsTrue |
N/A |
IsTrue (propriedade) |
-(unário) |
N/A |
- |
Negar |
+ (unário) |
N/A |
+ |
Sinal de mais |
False |
IsFalse |
False |
IsTrue (propriedade) |
N/d == não podem ser sobrecarregados no linguagem selecionado.
A regra também verifica os operadores de conversão implícita e explícita em um tipo (SomeType), verificando métodos chamados ToSomeType e FromSomeType.
Em translation from VPE for Csharp, quando um operador binário sobrecarregado, o operador de atribuição correspondente, se houver, também é implicitamente sobrecarregado.
Como corrigir violações
Para corrigir uma violação dessa regra, implemente o método alternativo para o operador; nomeá-lo usando o nome alternativo recomendado.
Quando suprimir avisos
Eliminar um aviso dessa regra se você estiver implementando uma biblioteca compartilhada.Aplicativos podem ignorar um aviso da regra.
Exemplo
O exemplo a seguir define uma estrutura que viola essa regra.
using System;
namespace UsageLibrary
{
public struct Point
{
private int x,y;
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
public override string ToString()
{
return String.Format("({0},{1})",x,y);
}
// Violates rule: OperatorOverloadsHaveNamedAlternates.
public static Point operator+(Point a, Point b)
{
return new Point(a.x + b.x, a.y + b.y);
}
public int X {get {return x;}}
public int Y {get {return x;}}
}
}
Regras relacionadas
Não sobrecarregar o operador equals em tipos de referência
Operadores devem ter sobrecargas simétricas
É igual a substituir na sobrecarga de operador é igual a
Substituir GetHashCode na substituição Equals
É igual a sobrecarga de operador em substituindo ValueType.Equals