CA2223: Member sollten sich durch mehr als nur den Rückgabetyp unterscheiden
TypeName |
MembersShouldDifferByMoreThanReturnType |
CheckId |
CA2223 |
Kategorie |
Microsoft.Usage |
Unterbrechende Änderung |
Breaking |
Ursache
Zwei öffentliche oder geschützte Member weisen Signaturen auf, die bis auf den Rückgabetyp identisch sind.
Regelbeschreibung
Die Common Language Runtime lässt die Verwendung von Rückgabetypen zu, mit deren Hilfe zwischen anderweitig identischen Membern unterschieden werden kann. Trotzdem ist dieses Feature weder in der Common Language Specification (CLS) enthalten, noch eine gebräuchliche Funktion von .NET-Programmiersprachen. Wenn sich Member nur durch den Rückgabetyp unterscheiden, sind Entwickler und Entwicklungstools möglicherweise nicht in der Lage, sie richtig zu unterscheiden.
Behandeln von Verstößen
Um einen Verstoß gegen diese Regel zu beheben, ändern Sie die Gestaltung der Member so, dass sie ausschließlich aufgrund ihrer Namen und Parametertypen unverwechselbar sind, oder Sie machen die Member nicht verfügbar.
Wann sollten Warnungen unterdrückt werden?
Unterdrücken Sie keine Warnung dieser Regel.
Beispiel
Im folgenden Beispiel (in Microsoft Intermediate Language, MSIL), wird ein Typ veranschaulicht, der gegen diese Regel verstößt. Beachten Sie, dass mit C# oder Visual Basic .NET nicht gegen diese Regel verstoßen werden kann.
.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