Compartilhar via


CA2223: os membros devem ser diferentes além do tipo de retorno

TypeName

MembersShouldDifferByMoreThanReturnType

CheckId

CA2223

Categoria

Microsoft.Usage

Alteração Significativa

Quebra

Causa

Dois membros públicos ou protegidos têm assinaturas que são idênticas com exceção do tipo de retorno.

Descrição da Regra

Embora Common Language Runtime permitir o uso de tipos de retorno diferenciar membros de outra forma idênticos, este recurso não está em CLS, nem é um recurso comum das linguagens de programação .NET.Quando os membros são diferentes apenas pelo tipo de retorno, os desenvolvedores e as ferramentas de desenvolvimento não podem distinguir corretamente entre eles.

Como Corrigir Violações

Para corrigir uma violação desta regra, modificar o design dos membros de modo que sejam exclusivos com base apenas nos nomes e tipos de parâmetros, ou não expõe os membros.

Quando Suprimir Alertas

Não elimine um alerta desta regra.

Exemplo

O exemplo a seguir, na linguagem intermediária da Microsoft (MSIL), mostra um tipo que viola esta regra.Observe que esta regra não pode ser violada usando C# ou Visual Basic .NET.

.namespace UsageLibrary
{
  .class public auto ansi beforefieldinit ReturnTypeTest
         extends [mscorlib]System.Object
  {
    .method public hidebysig instance int32
            AMethod(int32 x) cil managed
    {
      // Code size       6 (0x6)
      .maxstack  1
      .locals init (int32 V_0)
      IL_0000:  ldc.i4.0
      IL_0001:  stloc.0
      IL_0002:  br.s       IL_0004

      IL_0004:  ldloc.0
      IL_0005:  ret
    } // end of method ReturnTypeTest::AMethod

    .method public hidebysig instance string
            AMethod(int32 x) cil managed
    {
      // Code size       10 (0xa)
      .maxstack  1
      .locals init (string V_0)
      IL_0000:  ldstr      "test"
      IL_0005:  stloc.0
      IL_0006:  br.s       IL_0008

      IL_0008:  ldloc.0
      IL_0009:  ret
    } // end of method ReturnTypeTest::AMethod

    .method public hidebysig specialname rtspecialname
            instance void  .ctor() cil managed
    {
      // Code size       7 (0x7)
      .maxstack  1
      IL_0000:  ldarg.0
      IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
      IL_0006:  ret
    } // end of method ReturnTypeTest::.ctor

  } // end of class ReturnTypeTest

} // end of namespace UsageLibrary