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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour