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

Élément Valeur
ID de la règle CA2223
Category Microsoft.Usage
Modification avec rupture Rupture

Cause

Deux membres publics ou protégés ont des signatures identiques à l’exception du type de retour.

Notes

Cette règle est déconseillée. Pour plus d’informations, consultez Règles dépréciées.

Description de la règle

Bien que le common language runtime permette l’utilisation de types de retour pour différencier des membres identiques, cette fonctionnalité ne figure pas dans la Common Language Specification, et n’est pas une fonctionnalité courante des langages de programmation .NET. Quand des membres diffèrent uniquement par le type de retour, il arrive que les développeurs et les outils de développement ne puissent pas les distinguer correctement.

Comment corriger les violations

Pour corriger toute violation de cette règle, changez la conception des membres afin qu’ils soient uniques seulement en fonction de leurs noms et types de paramètre, ou n’exposez pas les membres.

Quand supprimer les avertissements

Ne supprimez aucun avertissement de cette règle.

Exemple

L’exemple suivant, en langage MSIL (Microsoft Intermediate Language), montre un type qui enfreint cette règle. Notez que cette règle ne peut pas être violée en C# ou en 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