Udostępnij za pośrednictwem


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