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