CA2223: Elementy członkowskie powinny różnić się bardziej, nie tylko zwracanym typem
Pozycja | Wartość |
---|---|
Ruleid | CA2223 |
Kategoria | Microsoft.Usage |
Zmiana powodująca niezgodność | Kluczowa |
Przyczyna
Dwa publiczne lub chronione elementy członkowskie mają identyczne podpisy, z wyjątkiem typu zwracanego.
Uwaga
Ta reguła została przestarzała. Aby uzyskać więcej informacji, zobacz Przestarzałe reguły.
Opis reguły
Mimo że środowisko uruchomieniowe języka wspólnego zezwala na używanie typów zwracanych w celu rozróżnienia między inaczej identycznymi elementami członkowskimi, ta funkcja nie znajduje się w specyfikacji języka wspólnego ani nie jest wspólną funkcją języków programowania platformy .NET. Jeśli członkowie różnią się tylko typem zwrotnym, deweloperzy i narzędzia programistyczne mogą nie rozróżniać ich poprawnie.
Jak naprawić naruszenia
Aby naprawić naruszenie tej reguły, zmień projekt elementów członkowskich tak, aby były unikatowe tylko na podstawie ich nazw i typów parametrów lub nie uwidaczniają elementów członkowskich.
Kiedy pomijać ostrzeżenia
Nie pomijaj ostrzeżeń dla tej reguły.
Przykład
W poniższym przykładzie w języku microsoft intermediate language (MSIL) pokazano typ naruszający tę regułę. Zauważ, że nie można naruszyć tej reguły przy użyciu języka C# lub 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
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla