Partager via


Les membres ne doivent pas uniquement différer par leur type de retour

Mise à jour : novembre 2007

TypeName

MembersShouldDifferByMoreThanReturnType

CheckId

CA2223

Catégorie

Microsoft.Usage

Modification avec rupture

Oui

Cause

Deux membres publics ou protégés présentent des signatures identiques à l'exception du type de retour.

Description de la règle

Bien que le Common Language Runtime autorise l'utilisation de types de retour pour différencier des membres autrement identiques, cette fonctionnalité ne figure pas dans la Common Language Specification, et n'est pas une fonctionnalité courante des langages de programmation .NET. Lorsque les membres diffèrent uniquement par un type de retour, les développeurs et les outils de développement peuvent ne pas les distinguer correctement.

Comment corriger les violations

Pour corriger une violation de cette règle, modifiez le design des membres afin qu'ils reposent uniquement sur leurs noms et types de paramètre, ou ne les exposez pas.

Quand supprimer les avertissements

Ne supprimez aucun avertissement de cette règle.

Exemple

L'exemple suivant, en MSIL (MicroSoft Intermediate Language), présente un type qui viole cette règle. Notez que cette règle ne peut pas être enfreinte en utilisant 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