CA2223: Los miembros deben diferenciarse por algo más que por un tipo de valor devueltoCA2223: Members should differ by more than return type

TypeNameTypeName MembersShouldDifferByMoreThanReturnTypeMembersShouldDifferByMoreThanReturnType
Identificador de comprobaciónCheckId CA2223CA2223
CategoríaCategory Microsoft.UsageMicrosoft.Usage
Cambio problemáticoBreaking Change ProblemáticoBreaking

MotivoCause

Dos miembros públicos o protegidos tienen firmas idénticas, salvo por el tipo de valor devuelto.Two public or protected members have signatures that are identical except for return type.

Descripción de la reglaRule Description

Aunque common language runtime permite utilizar tipos de valor devuelto para diferenciar miembros idénticos, esta característica no está en Common Language Specification ni es una característica común de lenguajes de programación. NET.Although the common language runtime permits the use of return types to differentiate between otherwise identical members, this feature is not in the Common Language Specification, nor is it a common feature of .NET programming languages. Cuando los miembros diferenciarse únicamente por el tipo de valor devuelto, los desarrolladores y las herramientas de desarrollo podrían no correctamente distinguir entre ellos.When members differ only by return type, developers and development tools might not correctly distinguish between them.

Cómo corregir infraccionesHow to Fix Violations

Para corregir una infracción de esta regla, cambie el diseño de los miembros para que sean únicos basándose únicamente en sus nombres y tipos de parámetro, o no exponen a los miembros.To fix a violation of this rule, change the design of the members so that they are unique based only on their names and parameter types, or do not expose the members.

Cuándo suprimir advertenciasWhen to Suppress Warnings

No suprima las advertencias de esta regla.Do not suppress a warning from this rule.

EjemploExample

El ejemplo siguiente, en lenguaje intermedio de Microsoft (MSIL), muestra un tipo que infringe esta regla.The following example, in Microsoft intermediate language (MSIL), shows a type that violates this rule. Tenga en cuenta que no se puede infringir esta regla mediante el uso de C# o Visual Basic.Notice that this rule cannot be violated by using C# or Visual Basic.


.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