Compartilhar via


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